目录
1.概述
2.什么是amba协议, 为什么使用它?
AMBA 如何发展
3.axi 协议概述
AXI in a multi-manager system
4.Channel transfers and transactions
5. 通道信号
1.概述
本文介绍了一个名为Advanced Microcontroller Bus Architecture (AMBA) AXI的协议,它是现代SoC(System-on-Chip)设计中非常流行的一个协议。这个指南将介绍AXI的主要特点,解释有助于实现AXI协议的关键概念和细节。
指南将会阐述以下内容:
- AMBA是什么。
- 为什么AMBA在现代SoC设计中如此受欢迎。
- 传输和事务的概念是如何支撑AMBA协议的。
- 不同通道信号及其提供的功能。
- 独占式访问传输,允许多个管理器同时访问同一从属。
- AMBA协议规定的规则和条件。
- 对于常见元素(如混合字节序结构)的关键属性和支持。
术语上的变化
在早期的文档中,通常使用“master”来指代控制总线上的主设备,使用“slave”来指代从设备。而现在,这些术语已经被更新了。新的文档中使用“manager”来指代控制总线的设备,使用“subordinate”来指代连接到总线上并由控制设备控制的设备。可以说,“manager”是“master”的同义词,“subordinate”是“slave”的同义词。这种变化可能是为了更加准确地描述这些设备之间的关系,并且避免使用一些可能会被认为是不当或有歧义的术语。
2.什么是amba协议, 为什么使用它?
AMBA是Advanced Microcontroller Bus Architecture的缩写,是一种面向片上系统(SoC)设计的开放标准芯片内部互连规范。基本上,AMBA协议定义了功能块之间的通信方式。以下图表展示了一个SoC设计的例子。该SoC有几个功能块,使用AMBA协议(如AXI)来彼此通信:
简单来说,AMBA协议是一种在芯片内部连接和管理功能块的规范,可以用于各种SoC设计中。
AMBA(高级微控制器总线架构)在现代电子产品中的应用和范围越来越广,AMBA简化了具有多个处理器和大量控制器和外设的设计开发。然而,随着时间的推移,AMBA的范围已经扩大,远远超出了微控制器设备的范畴。
现在,AMBA广泛应用于各种ASIC和SoC芯片中。这些芯片包括应用于IoT子系统、智能手机和网络SoC等设备的应用处理器。
使用AMBA的原因有很多,其中一个主要的好处是有效的IP重用。IP重用指的是在新的设计中使用预先存在的IP组件,而不是从头开始创建所有内容。这很重要,因为它可以减少SoC(芯片系统)开发的成本和时间。AMBA规范提供了接口标准,使得IP重用成为可能,因此成千上万的SoC和IP产品都使用AMBA接口。
首先,AMBA提供了灵活性,可以与各种SoC一起工作。在支持不同功耗、性能和面积要求的各种SoC的同时,IP重用需要一个共同的标准。Arm提供了一系列针对这些不同需求进行优化的接口规范。其次,AMBA作为一个标准接口规范,可以使来自不同设计团队或供应商的IP组件兼容。另外,AMBA得到广泛实现和支持,包括来自第三方IP产品和工具的支持。总的来说,AMBA的高效率得益于其能够实现最大带宽和零延迟。最后,文章提到了总线接口标准的两个主要特征:带宽和延迟。带宽是指在接口上驱动数据的速率,而延迟则是指事务开始和完成之间的延迟时间。一个好的接口的效率取决于它在实现最大带宽的同时能否实现零延迟。
AMBA 如何发展
Arm公司在1990年代末引入的AMBA总线架构。AMBA包括多个不同的总线协议,旨在为系统内部提供高效,灵活,可扩展的通信方式,适用于不同的应用场景。AMBA总线的第一代是Advanced System Bus(ASB)和Advanced Peripheral Bus(APB)。其中,APB是一种专为低带宽控制访问而设计的总线,具有简单的地址和数据阶段以及低复杂度的信号列表。AMBA第二代添加了AMBA高性能总线(AHB),该总线是单个时钟边沿协议,具有流水线设计和控制访问的MUX等特点。AMBA第三代引入了Advanced Trace Bus(ATB)和AHB-Lite等新协议,其中ATB是CoreSight芯片内调试和跟踪解决方案的一部分,而AHB-Lite是AHB的子集,简化了单管理器总线的设计。AMBA第四代包括AXI4,AXI Coherency Extensions(ACE)和AXI4-Stream等新协议,其中ACE扩展了AXI的信令,引入了系统范围的一致性,使多个处理器可以共享内存,并支持big.LITTLE处理。AMBA第五代包括Coherent Hub Interface(CHI)和Adaptive Traffic Profiles(ATP)等新协议,其中CHI具有重新设计的高速传输层和用于减少拥塞的特性,而ATP用于建模高级内存访问行为。新协议还引入了一些新特性和选项,如支持高频率、非阻塞的相干数据传输,分层模型,缓存暂存,远程原子操作和端到端数据保护和中毒信令等。
3.axi 协议概述
AXI接口规范(AXI是一种接口规范,它定义了IP块的接口,而不是互联本身)。
该规范定义了IP块的接口类型(管理器和从属)以及它们之间的连接方式,该规范包含相同的信号,这使得不同的IP集成相对简单。通过AXI连接管理器和从属接口,可以实现最大带宽和无需额外逻辑。而且,由于使用AXI,只需要验证一个单一的协议。总之,AXI规范使IP块之间的集成更加简单,同时提供了高效的数据传输和最小的逻辑延迟。
AXI in a multi-manager system
图示展示了一个简化版的SoC系统,由管理器、从属器和互联器构成:Arm处理器是管理器的一个例子,而内存控制器则是从属器的一个简单例子。AXI协议定义了管理器和从属器之间点对点连接的信号和时序。
AXI协议是一种点对点规范,而不是总线规范。因此,它只描述接口之间的信号和时序。上述图表显示每个AXI管理器接口连接到单个AXI从属接口。在涉及多个管理器和从属设备时,需要一个互联网络。这个互联网络还实现了从属和管理器接口,其中实现了AXI协议。
下图显示互联网络是一个复杂的元素,需要它自己的AXI管理器和从属接口与外部功能块通信:
The following diagram shows an example of an SoC with various processors and function blocks:
上图介绍了关于AXI(Advanced eXtensible Interface,高级可扩展接口)的连接图和协议。该连接图显示了AXI被使用的所有连接,其中AXI3和AXI4常常被用于同一个SoC中。在这种情况下,由于不同的AXI接口之间的协议不同,所以需要使用互联器来执行协议转换。
AXI协议中用于通信的五个主要通道。每个AXI接口都需要使用这些通道来完成通信。
管理者和下属之间通信系统中用于写操作和读操作的通道。管理者通过“写地址”(AW)通道发送地址,并通过“写数据”(W)通道传输数据到下属处。下属将收到的数据写入指定的地址后,通过“写响应”(B)通道向管理者发送响应消息。读操作使用“读地址”(AR)通道,管理者发送要读取的地址,下属通过“读数据”(R)通道将请求的数据发送给管理者。下属还可以在“读数据”(R)通道上返回错误消息。例如,如果地址无效、数据已损坏或访问没有正确的安全权限,则会发生错误。
为什么没有读响应通道?
每个通道都是单向的,因此需要一个单独的写响应通道将响应传回给管理器。然而,不需要一个读响应通道,因为读响应是作为读数据通道的一部分传递的。换句话说,这个通信协议使用了一种不同于常见的双向通信方式,而是将不同的信息分别传递给不同的通道。
通过使用独立的地址和数据通道来进行读写数据传输,以最大化接口的带宽。同时,读通道和写通道之间没有时间关系,这意味着读序列可以与写序列同时发生。这五个通道中的每一个都包含多个信号,每个通道中所有这些信号的前缀如下:
• AW代表写地址通道上的信号
• AR代表读地址通道上的信号
• W代表写数据通道上的信号
• R代表读数据通道上的信号
• B代表写响应通道上的信号
"B代表缓冲,因为下属的响应发生在所有写入完成之后。" 这里的缓冲指的是一种缓存机制,可以将一些数据在内存中暂时存储起来,等待后续的处理。在这个里,B代表的是缓冲机制,在上级和下属之间传递消息时,先将消息存入缓存中,等待所有的写操作完成后再将消息发送给下属,以确保数据的完整性和一致性。
AXI协议的一些主要特点。
该协议设计了一些特性,旨在提高数据传输和事务的带宽和延迟。具体特点如下:
• 独立的读写通道:AXI支持两组不同的通道,一组用于写操作,一组用于读操作。具有两组独立的通道有助于提高接口的带宽性能。这是因为读写操作可以同时进行。
• 多个未完成的地址(outstanding of address):AXI允许多个未完成的地址。这意味着管理器可以发出事务而不必等待早期的事务完成。这可以提高系统性能,因为它实现了事务的并行处理。
• 地址和数据操作之间没有严格的时间关系(inteal leaving):在AXI中,地址和数据操作之间没有严格的时间关系。这意味着,例如,管理器可以在写地址通道上发出写地址,但是管理器必须提供相应的数据以写入写数据通道的时间没有要求。
• 支持非对齐数据传输:对于由多个字节组成的数据传输,第一个访问的字节可以与自然地址边界不对齐。例如,从0x1002字节地址开始的32位数据包不对齐于自然的32位地址边界。
• 无序事务完成(out of order):使用AXI可以实现无序事务完成。AXI协议包括事务标识符,对具有不同ID值的事务完成没有限制。这意味着单个物理端口可以通过扮演多个逻辑端口来支持无序事务,每个逻辑端口按顺序处理其事务。
• 基于起始地址的突发事务(burst):AXI管理器仅发出第一个传输的起始地址。对于任何后续传输,从属方将根据突发类型计算下一个传输地址。
4.Channel transfers and transactions
AXI通道的握手原则,这个握手机制是所有读写事务的基础机制。在AXI4协议中,定义了五种不同的通道,这些通道都共享同一种基于VALID和READY信号的握手机制,如下图所示。这个握手机制可以确保发送方和接收方都已经准备好数据传输,从而确保数据的准确传输。
其中VALID信号从数据源发送到目的地,READY信号则从目的地发送到数据源。在使用哪个信道时,源和目的地是管理器或下属取决于哪个通道正在使用。例如,对于“读地址”通道,管理器是源,而对于“读数据”通道,管理器是目的地。数据源使用VALID信号来指示何时有有效信息可用。VALID信号必须保持断言状态(即设置为高电平),直到目的地接受信息。这种一直保持断言状态的信号称为“sticky signals”(黏性信号)。目的地使用READY信号来指示何时可以接受信息。READY信号从通道目的地发送到通道源。这种机制不是异步握手,需要时钟的上升沿才能完成握手。
在设计互联结构时,需要了解被连接的管理器和下属的能力,以支持不同的数据传输顺序,并提高性能。同时,使用标准术语可以更容易地理解连接组件之间的交互。AXI协议将传输和事务区分开来,传输是指单次信息交换,而事务是指整个传输序列,包含地址传输、一个或多个数据传输以及对于写操作而言的响应传输。
简单来说,传输是指单次数据传输的过程,而事务是指由多次数据传输组成的整体操作过程。在设计互联结构时,需要考虑不同的数据传输顺序,以达到更好的性能表现。使用标准术语可以更好地理解连接组件之间的交互。
通道传输示例。
它解释了源和目的地之间可能的握手方式,并展示了几个符合AXI协议规范的VALID和READY序列的可能组合。第一个示例展示了时钟信号,接着是信息总线,最后是VALID和READY信号。可以理解为在数据传输中,有多种不同的方式可以使得源和目的地之间能够进行有效的通信,而这些方式需要符合协议规范才能得到有效的传输。
这个例子有以下事件序列:
1. 在时钟周期2中,VALID信号被断言,表示信息通道上的数据有效。
2. 在时钟周期3中,即下一个时钟周期,READY信号被断言。
3. 握手在时钟周期4的上升沿完成,因为READY和VALID信号都被断言。
这个例子有以下事件序列:
- 在时钟周期1中,READY信号被断言。
- 直到时钟周期3,VALID信号才被断言。
- 握手在时钟周期4的上升沿完成,因为READY和VALID信号都被断言。
最后一个例子显示在时钟周期3期间断言了VALID和READY信号,如下图所示:同样,握手在时钟周期4的上升沿完成,因为READY和VALID信号都被断言。
在所有三个例子中,当READY和VALID在时钟信号的上升沿被断言时,信息会通过通道传递。
读写握手必须遵守以下规则:
• 源不能等待READY被断言后再断言VALID。
• 目标可以等待VALID被断言后再断言READY。
这些规则意味着READY可以在VALID之前或之后甚至同时被断言。
写事务:单个数据项
本节描述了单个数据项的写事务的过程以及用于完成事务的不同通道。
此写事务涉及以下通道:
• 写地址(AW)
• 写(W)
• 写响应(B)
首先,在写地址(AW)通道上进行握手,如下图所示:
这个握手协议是用来让主管理者将写入地址传递给从属设备的。
握手协议包括以下事件序列:
- 在时钟周期2中,主管理者将地址放在AWADDR中并断言AWVALID。
- 在时钟周期3中,从属设备断言AWREADY以表示其准备好接收地址值。
- 握手协议在时钟周期4的上升沿完成。
在第一次握手协议之后,主管理者通过写入(W)通道将数据传输到从属设备中,如下图所示:
数据传输包括以下事件序列:
- 在时钟周期n中,从属设备设置WREADY为高,等待数据传输。
- 在时钟周期n+2中,主管理者将数据放在WDATA总线上,并断言WVALID。
- 握手协议在时钟周期n+3的上升沿完成。
最后,一旦从属设备接收到所有WDATA数据,它使用写入响应(B)通道来确认写入事务已完成。该响应如下图所示:
写响应具有以下事件序列:
- 管理员断言BREADY。
- 下属驱动BRESP以指示写事务的成功或失败,并断言BVALID。 握手在时钟周期n+4的上升沿完成。
写传输-多数据项
AXI是一种基于burst的协议,这意味着可以在单个事务中传输多个数据。我们可以在AW通道上传输单个地址以传输多个数据,并附带burst宽度和长度信息。
下面的图示例展示了多数据传输的一个例子:
在这种情况下,AW通道表示三个传输序列,而在W通道上,我们看到三个数据传输。 主管理器将WLAST置高以指示最终的WDATA。这意味着下级可以计算数据传输次数,也可以只监视WLAST。 一旦接收到所有的WDATA传输,下级在B通道上发出一个单独的BRESP值。一个BRESP值涵盖整个突发传输。如果下级决定任何一个传输包含错误,它必须等待整个突发传输完成,然后再通知管理器发生了错误。
读传输-单数据项
本节详细介绍了单个数据项读事务的过程以及完成事务所使用的不同通道。
这个写事务涉及到以下通道: • 读地址(AR) • 读取(R)
首先,在读地址(AR)通道上进行握手,如下图所示:
握手过程的事件顺序如下:
- 在时钟周期2中,管理器通过ARADDR通信将读取的地址传递给从属,并断言ARVALID。
- 在时钟周期3中,从属断言ARREADY以指示它已准备好接收地址值。 握手完成于时钟周期4的上升沿。 接下来,在读(R)通道上,从属将数据传输给管理器。以下图示展示了数据传输过程:
数据传输握手的事件顺序如下:
- 在时钟周期n中,管理器通过断言RREADY表明它正在等待接收数据。
- 从属在时钟周期n+2中检索数据并将其放置在RDATA上。在这种情况下,因为这是一次单一的数据事务,从属还将RLAST信号设置为高电平。同时,从属使用RRESP向管理器指示读取事务的成功或失败,并断言RVALID。
- 由于管理器已经断言了RREADY,握手在时钟周期n+3的上升沿完成。
读传输-多数据项
AXI协议还允许在同一事务中进行多个数据传输的读取突发传输。这类似于“写入事务:多个数据项”中描述的写入突发。 下面的图示展示了一个突发读取传输的示例:
在这个例子中,我们在AR通道上传输单个地址,以传输多个数据项,并伴随着突发宽度和长度信息。 在这里,AR通道表示了三个传输的序列,因此在R通道上,我们看到了从从属到管理器的三个数据传输。 在R通道上,从属将数据传输给管理器。在这个例子中,由于RREADY被设置为高电平,所以管理器正在等待数据。对于每个传输,从属驱动有效的RDATA并断言RVALID。 读取事务和写入事务之间的一个区别是,在读取事务中,每个传输都有一个RRESP响应。这是因为,在写入事务中,从属必须将响应作为B通道上的单独传输发送。在读取事务中,从属使用同一通道将数据发送回管理器并指示读取操作的状态。 如果在事务中的任何传输中指示了错误,则必须仍然完成指定长度的完整事务。没有所谓的早期突发终止。
“活动事务也称为未完成事务。”“活动读取事务”是指已经传输了读取地址,但在当前时间点上尚未传输最后的读取数据的事务。在读取操作中,数据必须在地址之后传输,因此可以确定事务开始的简单参考点。换句话说,活动事务是指尚未完成的事务,其中一些操作已经开始,但尚未完成。在这个上下文中,特别是指读取操作,数据还没有传输完成。因此,这些活动事务需要进一步处理,直到它们被成功完成。下面的图表说明了这一点。
针对写入事务,数据可以在地址之后传输,但也可以在地址之前传输前导写入数据。 因此,写入事务的开始可以是以下两种情况之一:
• 写入地址的传输
• 前导写入信息的传输
因此,活动的写入事务是指已经传输了写入地址或前导写入数据,但尚未传输写入响应的事务。 下面的图示展示了一个活动的写入事务,其中写入地址已经传输,但是写入响应尚未传输。
下图显示了一个活动的写事务,其中已传输了前导写数据,但尚未传输写响应:
5. 通道信号
本节介绍了主要的AXI信号和属性,并解释了它们如何用于提高系统性能。重点介绍了AXI3和AXI4,而AXI5将在将来的迭代中涉及。
AXI协议定义了五个通道:三个用于写信号,两个用于读信号。
写通道信号 用于写事务的通道如下: • 写地址(Write Address) • 写数据(Write Data) • 写响应(Write Response)
下表显示了写地址通道信号:
每个通道中的所有信号都有相同的前缀:
• AW表示写地址通道
• W表示写数据通道
• B表示写响应通道
AXI3协议和AXI4协议之间的写通道存在一些差异:
- 对于写地址通道,AXI4协议的AWLEN信号更宽。因此,AXI4能够生成比AXI3更长的突发传输。
- AXI4将AWLOCK信号缩减为一个比特,仅适用于独占传输,因为不支持锁定传输。
- AXI4在AW通道中添加了AWQOS信号。此信号支持AXI4协议中的服务质量(QoS)概念。
- AXI4在AW通道中添加了AWREGION信号。此信号支持从单个物理从属接口提供多个逻辑接口的从属区域。
- AXI4从W通道中删除了WID信号。这是因为不再允许写数据重排序。
- AXI4在每个通道中添加了用户定义信号。
读通道信号
用于读取事务的通道是:
• 读取地址(Read Address)
• 读取数据(Read Data)
以下表格显示了读取地址通道信号:每个通道中的所有信号都具有相同的前缀:
• AR 表示读取地址通道
• R 表示读取数据通道
AXI3协议和AXI4协议的读通道存在一些差异:
- • 对于AXI4协议,读取地址长度信号ARLEN更宽。因此,AXI4能够生成比AXI3更长的读取突发。
- • AXI4将ARLOCK信号缩减为单个位,只适用于排他传输,因为不支持锁定传输。
- • 与写通道信号一样,服务质量和下属区域的概念也适用于读事务。这些使用AR通道中的ARQOS和ARREGION信号。
- • AXI4在这两个读通道中添加了用户定义的信号。
每个读写事务都有属性来指定该事务的数据长度、大小和突发信号属性。在以下属性列表中,x 表示写和读,因此它们适用于写地址通道和读地址通道:
• AxLEN 描述事务中传输的长度,以传输数量为单位。
- 对于 AXI3,AxLEN[3:0] 有 4 位,它指定了事务中 1-16 个传输的范围。
- 对于 AXI4,AxLEN[7:0] 有 8 位,它指定了事务中 1-256 个数据传输的范围。
• AxSize [2:0] 描述每个数据传输中要传输的最大字节数。三位编码表示每个传输 1、2、4、8、16、32、64 或 128 字节。
• AxBURST [1:0] 描述事务的突发类型:固定、递增或循环。下表显示了这些突发类型的不同属性:
保护级别支持
AXI总线提供了保护级别支持,其中AXI提供了访问权限信号AWPROT和ARPROT,可以保护系统中下游的非法事务。例如,如果一个事务没有正确的保护级别,内存控制器可以使用这些信号拒绝读或写访问。这对于安全解决方案非常有用,例如Arm TrustZone,其中处理器具有两个分离的状态:安全状态和非安全状态。AxPROT定义了三个访问保护级别,如下图所示。
简单来说,AXI提供了一种保护机制,可以在系统中保护数据的安全性,这对于需要高安全性的系统和设备非常有用。通过访问权限信号,可以限制非法的读写操作,保护系统中的数据不受损害。AxPROT定义了三个级别的保护,可以根据具体情况进行选择和配置。
AxPROT 是 AXI 事务中的一个字段,用于指定该事务的某些属性。其中包括:
-
AxPROT[0](P)用于标识访问是特权访问还是非特权访问:
- 1 表示特权访问。
- 0 表示非特权访问。 尽管有些处理器支持多个特权级别,但 AXI 协议只能提供特权访问和非特权访问之间的区别。
-
AxPROT[1](NS)用于标识访问是安全的还是非安全的:
- 1 表示非安全事务。
- 0 表示安全事务。
-
AxPROT[2](I)用于指示该事务是指令访问还是数据访问:
- 1 表示指令访问。
- 0 表示数据访问。 在 AXI 协议中,这个指示被定义为一个提示。它并不总是准确的,例如当一个事务包含指令和数据项时。Arm AXI 规范建议管理器将位 2 设置为零,以表示数据访问,除非特别知道该访问是指令访问。
缓存支持
现代 SoC 系统中的缓存支持。这些缓存通常被放置在系统的几个点上。例如,二级缓存可能在处理器外部,或者三级缓存可能在内存控制器前面。
为了支持使用不同缓存策略的系统,AWCACHE 和 ARCACHE 信号指示事务如何在系统中进行传递。 AxCACHE 位分配指定以下属性:
- AxCACHE [0](B)是可缓冲位。当将此位设置为 1 时,互连或任何组件都可以延迟事务到达最终目的地的时间。可缓冲位指示响应是否可以来自中间点,或者响应必须来自目标下属。
- AxCACHE [1] 是 AXI3 中的可缓存位,或者是 AXI4 中的可修改位。该位指示最终目的地的事务属性不必与原始事务的属性匹配。对于写入操作,设置可修改位表示可以合并多个不同的写入操作,或者将单个写入操作分成多个事务。对于读取操作,设置可修改位表示可以预取一个位置的内容,或者可以使用单个提取的值进行多个读取事务。
- AxCACHE [2] 是 RA 位。RA 位表示在读取操作中,建议但不强制分配事务。如果断言了 AxCACHE [2] 或 AxCACHE [3] 中的任何一个,则必须在缓存中查找事务,因为该事务可能已由另一个管理器在该缓存中分配。
- AxCACHE [3] 是 WA 位。WA 位表示在写入操作中,建议但不强制分配事务。如果断言了 AxCACHE [2] 或 AxCACHE [3] 中的任何一个,则必须在缓存中查找事务,因为该事务可能已由另一个管理器在该缓存中分配。
如果AxCACHE [1]信号未被激活,即未被设置为可缓存位,那么AxCACHE [2]和AxCACHE [3]信号也不能被激活。
AXI协议中的AxCACHE信号和读写分配(read and write allocation)对系统级缓存优化性能的影响。
让读写分配(read and write allocation)信号同时存在于读和写地址总线上的原因是,它允许系统级缓存优化其性能。例如,考虑一个缓存,它将“write-allocate,但不是read-allocate”定义为读访问。在这种情况下,缓存知道地址可能存储在缓存中,因为它可能已经被分配在先前的写入上,因此它必须进行缓存查找。
但是,现在考虑缓存看到的读访问被定义为“no write-allocate and no read-allocate”。在这种情况下,缓存知道地址未被分配在缓存中。如果缓存知道每个事务的读写分配,它可以避免查找并立即将事务传递到另一侧,从而提高性能。文章来源:https://www.toymoban.com/news/detail-817864.html
最后,需要注意的是,缓存不一定需要按照这种方式运行,但AXI协议定义了读写分配(read and write allocation)信号用于读和写操作,以允许这种操作模式的实现。文章来源地址https://www.toymoban.com/news/detail-817864.html
到了这里,关于AMBA协议- AXI协议指南(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!