如果你是一个IC工程师,并且当前的芯片设计是基于各种复用IP的SOC芯片,你肯定听说过AMBA、AHB、APB、AXI、AXI-lite、ACE、CHI等。
AMBA总线协议是一套由ARM提供的互连规范,该规范标准化了各种IP之间的芯片通信机制。这些设计通常有一个或多个微处理器以及集成其他一些组件——内部存储器或外部存储器桥、DSP、DMA、加速器和各种其他外围设备,如USB、UART、PCIE、I2C等。AMBA协议的主要动机是用一种标准和高效的方法来重用这些跨多个设计的IP。
学习AMBA协议的第一步是了解这些不同的协议在哪里使用,是如何演进的,以及它们适合什么样SOC设计。下图展示了传统基于AMBA的SOC设计,它使用AHB(高级高性能)协议进行高带宽互连,以及针对低带宽外围互连的APB(高级外围总线)协议。
随着越来越多的IP集成到SOC设计中,读写共享的AHB、APB总线已经无法满足互联需求了。2003年,AMBA3.0引入了点对点连接协议——AXI(高级可扩展接口)。此外在2010年,又推出了一个增强版——AXI4。下图说明了协议的演变以及行业中的SOC设计趋势。
下图说明了如何使用AXI互连来构建各种IP通信的的SOC。与以前的AHB/ASB总线相比,AXI互连有助于提高连接数量。
在移动和智能手机时代发生了进一步的演进,SOC集成了2/4/8核处理器和共享cache,并且需要跨内存子系统的硬件管理一致性。这导致了在AMBA修订版4中引入了ACE(AXI一致性协议扩展)。
在当前HPC和数据中心市场的异构计算时代,单个芯片上集成越来越多的处理器核心以及GPU、DSP、FPGA、内存控制器和IO子系统。2013年,AMBA5引入了CHI协议,作为AXI/ACE协议的重新设计。基于信号的AXI/ACE协议被新的基于包的CHI协议所取代。
ARM已经开源了所有的协议,所有的规范都可以从ARM的网站上免费下载。
1、APB:高级外围设备总线(APB)用于连接低带宽的外围设备。它是一个简单的非流水线协议。读写操作共享同一组信号,不支持burst数据传输。最新的规范(APB2.0)可以在ARM网站上找到,是最容易学习的AMBA 协议。
2、AHB:高级高性能总线(AHB)用于连接共享总线上需要更高带宽的组件。这些slave组件可以是内部内存或外部内存接口、DMA、DSP等。AHB可以通过burst数据传输来获得更高的带宽。
3、AHB-lite协议是AHB的一个简化版本。简化后只支持一个主设计,这消除了对任何仲裁、重试、分割事务等的需求。
4、高级可扩展接口(AXI)适合于高带宽和低延迟互连。这是一个点对点的互连,并克服了AHB、APB等共享总线协议在可连接的代理数量方面的限制性。该协议支持多个outstanding 的数据传输、burst数据传输、单独的读写通道和支持不同的总线宽度。
5、AXI-lite协议是AXI的简化版本,简化后不支持突发数据传输。
6、AXI-stream 协议是AXI协议的另一种风格,它只支持数据流从master 流到slave。与完整的AXI或AXI-lite不同,AXI-stream 协议中没有单独的读/写通道,因为其目的是只在一个方向上流。
7、ACE-AXI协议是AXI4协议的扩展,应用于在一个芯片上集成多个CPU核心与一致性cache的场景。ACE协议扩展了AXI读写数据通道,同时引入了单独的snoop 地址、snoop 数据和snoop 响应通道。这些额外的通道提供了实现基于snoop 的一致性协议的机制。
8、ACE-Lite—对于没有自己cache的agents ,但仍属于可共享一致性域的一部分,如DMA或网络接口agent,使用ACE-lite协议实现这种“单向”一致性。
9、CHI—ACE协议作为AXI的扩展而开发,以支持一致性互连。ACE协议使用了master/slave之间的信号电平通信,因此互连需要大量的线和增加的通道来进行snoops 和响应。这对于具有2/4核移动SOC 的小一致性clusters非常有效。随着SOC上集成越来越多的一致性clusters ——AMBA5修订版引入了CHI协议。CHI协议使用基于分层分组的通信协议,具有协议、链路层和物理层实现,还支持基于QoS的流控制和重试机制。
概述是我们深入地了解这些协议的开始,进一步了解的最好方法是阅读规范,以了解每个协议的细节。APB和AHB相对简单,而且很容易学习。AXI和ACE/CHI相对复杂,需要详细阅读,以及了解缓存一致性和一般通信协议的基本知识。
作者:XinXinHu
原文链接:https://mp.weixin.qq.com/s/N99HX5TJTpE2VUvdRvho8A
微信公众号:
授权转自数字芯片实验室公众号,请勿二次转载。
推荐阅读
更多数字IC设计技术干货等请关注数字芯片实验室专栏。