【ARM】AMBA和总线
AMBA
AMBA(Advanced Microcontroller Bus Architecture) 总线是由ARM公司提出的一种开放性的片上总线标准,它独立于处理器和工艺技术,具有高速度低功耗等特点。
总线:系统芯片中各个模块之间需要有接口来连接。总线作为子系统之间共享的通信链路。
ARM中的总线用于不同部件之间的通信。有两种不同类型的设备连接到总线:
ARM处理器:它是总线的主设备,拥有对总线的仲裁权,可以通过同一总线主动发起数据传输请求;
外围器件:是总线的从设备,在总线上是被动的,只能对主设备发出的一个传输请求做出反应。
AMBA 总线架构主要包括以下几种不同的总线标准:
AHB (Advanced High-performance Bus):高级高性能总线,用于连接处理器、直接存储器访问(DMA)、高性能存储器控制器等。
APB (Advanced Peripheral Bus):高级外围总线,用于连接低速外围设备,如 UART(通用异步接收发射器)。
AXI (Advanced eXtensible Interface):高级可拓展接口,提供高速度、高带宽的连接,支持乱序和非对齐操作,有效支持初始延迟较高的外设。
ASB (Advanced System Bus):高级系统总线,使用较少。
AMBA 1.0:ASB和APB
AMBA 2.0:AHB,ASB和APB
AMBA 3.0:AMBA Advanced extensible Interface (AXI)(可以用于ARM和FPGA的高速数据交互)
AMBA 4.0:…
AMBA总线优点
Efficient IP reuse(高效的IP重用):AMBA规范了接口,以至于数以千的SOCs和IPs都可以使用AMBA Interface。
Flexibility(灵活性):比较灵活的规范和接口定义。
Compatibility(兼容性):一个标准的接口规范,以至于在不同的IP直接得到兼容。
Support:AMBA得到很好的支持。它在整个半导体行业得到广泛实施和支持,包括来自第三方IP产品和工具的支持。
BandWith:在同步系统中,最大带宽受时钟速度和数据总线宽度限制。
AMBA 架构的 SOC
AHB(high-performance 的 system bus ): 负责连接例如 ARM 之类的 embedded processor 与 DMA controller,on-chip memory 和其他 interface,或其他需要 high bandwidth 的元件。
APB(low-power 的 peripheral bus ):用来连接系统的周边元件,其protocol 相对AHB 来讲较为简单, 与 AHB 之间则透过 Bridge 相连,期望能减少 system bus 的 loading。
在AHB和APB之间,有AHB-APB桥,这是为了解决高性能器件和片内低带宽外设之家的匹配问题;
AHB支持多个Master,因此需要Arbiter来仲裁。
仲裁器(Arbiter)在数字电路设计中是一个非常重要的模块,它的主要作用是在多个请求(request)信号中选择一个进行授权(grant)。当多个设备或模块需要访问同一资源(如总线、内存、设备等)时,仲裁器决定了哪个请求能够获得访问权。
在APB里面,唯一的Master就是APB桥,因此不需要仲裁。
AXI协议
适合高带宽和低延迟的设计
高带宽(Broadband):指具有较高数据传输速率的网络连接。
底延迟:指计算机系统或通信网络中的较短时间延迟。它通常用于指网络数据包通过网络连接从发送计算机到接收计算机的往返所需的时间。
该协议还支持:
分离的地址/控制和数据阶段(Separate address/control and data phases.)
通过使用字节选通信号的方式支持非对齐数据传输。
AHB 总线只支持对齐传输,而AXI协议支持地址的非对齐传输,在AXI传输中,只需要在传输 时给出首地址,其后的传输地址都是由首地址和突发大小、突发类型决定的
**AXI协议基于突发传输,定义了下列独立事务(一个事务可能包含多次传输)通道
**
读地址、读数据、写地址、写数据、写响应
地址通道携带描述被传输数据性质的控制信息,数据在主设备和从设备间通过以下方式传输:
1,写数据通道从主设备传输数据到从设备,在写传输时,从设备使用写响应通道通知主设备传输完成。
2,读数据通道从从设备传输数据到主设备。
写数据
读数据
每一个通道都拥有自己的VALID与READY信号用于实现握手,其中VALID信号表示通道的地址、数据或控制信息已经可用,而READY信号则表示接收方已准备好接收信息,其中,读数据和写数据通道还拥有LAST信号,该信号用于指示当前传输是否为当前事务中的最后一次传输。
读地址与写地址通道
读事务与写事务都拥有其自己的地址通道,对应的地址通道会携带一次事务所需的全部地址和控制信息
读数据通道
数据通道携带从设备传送给主设备的数据和响应信息,该通道包括两部分:
1,位宽可为8、16、32、64、128、256、512、1024bit的数据总线。
2,表示读事务完成状态的读响应信号。
写数据通道
写数据通道携带主设备传送给从设备的数据,该通道包括两部分:
位宽可为8、16、32、64、128、256、512、1024bit的数据总线。
为每一个8bit数据准备的字节选通信号,用于指示数据的哪几个字节是有效的
写响应通道
从设备使用写响应通道回应写事务,全部的写事务都需要写响应通道的完成信号,并且完成信号仅在一个写事务彻底完成时才产生,而并不会在每次数据传输时都产生。
AXI互联结构
AXI协议为以下接口提供了单一的接口定义:
在主设备和互联器(Interconnect)之间
在从设备和互联器之间
在主设备和从设备之间
大多数的系统使用如下三种互联拓扑之一:
共享的地址和数据总线
共享的地址总线以及多条数据总线
多层,具有多个地址和数据总线
该接口定义支持不同的互联器实现,设备之间的互联器等效于另一个拥有对称主端口和从端口的设备,真正的主设备和从设备可以连接到对应的端口。
AXI传输与存储器类型
当AXI主设备发起AXI操作时,对于AXI从设备:
AXI总线上所需的完整操作集形成AXI事务(Transaction)。
任何传输的有效数据都作为一次AXI突发传输(Burst)。
一次突发传输可以包含多次数据传输,一次数据传输称为一拍(Beat)。
AXI信号描述
下列信号被用于AXI3和AXI4。
所有信号都在公共时钟的上升沿被采样。
写地址通道信号
写数据通道信号
写响应通道信号
transfers和transactions的区别
transfers
是单次信息交换,需要一次VALID和READY信息握手
transactions
一个transactions是一个完整的突发传输(an entire burst of transfers),包括address transfer、data transfers、response transfer
握手过程
五个事务通道都使用VALID/READY作为握手信号,传输地址、数据和控制信息,使用这种握手方式,主从双方都可以对传输速度进行控制。源端产生VALID信号意味着其地址、数据或控制信息有效,目的端产生READY信号意味着它可以接收信息,只有当双方的VALID与READY信号都为高时传输才会开始。
在下图中,源端在T1之后给出地址、数据或控制信息,并令VALID有效,在T2之后,目的端检测到VALID有效并给出READY有效信息,在T3阶段传输会发生,因此在T3阶段及之前,源端不能释放或改变需要传输的信息。
源端必须在令VALID信号有效之后再等待READY信号有效,一旦VALID有效,源端必须等待握手发生,即在保持VALID不变的情况下,等待目的端的READY信号有效。
在下图中,目的端首先在T1阶段之后令READY信号有效,源端在T2阶段之后给出地址、数据或控制信息,并令VALID有效,然后在T3阶段开始传输,在这种情况下,传输只消耗了一个时钟周期,而在上面那种情况下,则消耗了两个时钟周期。
目的端可以在自身READY信号无效的情况下,等待源端的VALID信号有效,这一条规则和上一条规则必须同时遵守,否则可能造成死锁等待,同时,在VALID有效前,即使READY已经有效,也可以再次令READY无效。
在下图中,两端的VALID/READY信号同时有效,则传输立刻在下一个时钟周期开始:
Write transaction: single data item
Write transaction: multiple data item
Read transaction: single data item
Read transaction: multiple data item
AxLen,AxSize,AxBurst
AxLEN : 表示在一次transation中,有多少次transfers AXI3:1-16, AXI4:1-256
• AxSize : 表示一次transfer,能够传输多少字节的数据? AxSize[2:0]三个比特可以表示8个数字 1, 2, 4, 8, 16, 32, 64, or 128
• AxBURST[1:0] :表示burst的类型:fixed, incrementing, or wrapping
Cache support
AxCACHE [0]: bufferable比特,表示这是可以delay的transaction,transaction可能是没有到达最终的目的地的。
• AxCACHE [1]: 在AXI3中表示cacheable,在AXI4中表示modifiable。如果是modifiable,那么表示多个不同的写可以merge到同一个transactions中,读也是如此。(调用了多次tranfermerge到一个transaction中)
• AxCACHE [2]: 读分配cache
• AxCACHE [3]: 写分配cache
总线传输模型
RRESP : 读respond
BRESP : 写respond
RRESP、RRESP各有两个比特,能够表示4个respond code
• 00-OKEY: 表示访问成功,或表示独占访问失败。
• 01-EXOKEY: 表示独占访问成功
• 10-SLVERR: 表示slave返回了错误,如错误的transfer size或去写了一个只读的地址。
• 11-DECERR :去访问了一个不存在的
Atomic accesses with the lock signal 原子访问信号
AXI3中AxLOCK是2个比特位,到了AXI4上只有一个比特了
Quality of service
Region signaling
可能是NSAID携带信号,标识MASTER去访问哪个region
AXI channel dependencies
• WLAST必须先于BVALID完成
• RVALID必须晚于ARADDR被断言
• WVALID必须晚于AWVALID被断言
缓存一致性网络(CCN) – 专为基础设施应用而设计
缓存一致性互连(CCI) – 针对移动设备进行了优化
网络互连(NIC) – 高度可配置,适用于 SoC 广泛连接,具有多种应用
NIC/CCI系列是交叉矩阵的(Crossbar),CCN系列是基于环状总线的(Ring),NoC系列是网状总线(Mesh)
CoreLink Coherent Mesh Network Family
CMN-600
CMN-650(Neoverse)
CMN-600AE
CMN-700(Neoverse)
• CoreLink Cache Coherent Interconnect Family
CCI-400
CI-700
CCI-550
CCI-500
• Non-Coherent Interconnect
NI-700
NI-710AE
• CoreLink Cache Coherent Network Family
CCN-502
CCN-508
CCN-504
• CoreLink Network Interconnect Family
NIC-301
NIC-400
NIC-450