当前位置:   article > 正文

AMBA协议- AXI协议指南(2)_axi qos

axi qos

响应信号

AXI为读和写事务都提供响应信号。 对于读事务,从下级设备传来的响应信息会使用RRESP信号在读数据通道上进行信号传递。 对于写事务,响应信息会使用BRESP信号在写响应通道上进行信号传递。 RRESP和BRESP都由两个比特组成,并且这些信号的编码可以传输四个响应,如下表所示:

Response code描述
00-OKAYOKAY是大多数交易所使用的响应。OKAY表示正常访问已成功。该响应还可以指示独占访问失败。独占访问是指多个管理器可以同时访问下属,但这些管理器不能访问相同的内存范围。
01-EXOKAY独占访问成功。 "EXOKAY" 表示独占访问的读取或写入部分已经成功完成。
10-SLVERR下级错误。 "SLVERR" 用于当访问已经成功到达下级设备,但是下级设备希望向源设备返回错误条件时使用。这表示事务未成功。例如,当尝试进行不支持的传输大小或尝试对只读位置进行写入访问时。
11-DECERR解码错误。 "DECERR" 经常由互联组件生成,表示在事务地址上没有下级设备。

写数据 strobe

写数据 strobe 信号由管理器用来告诉下属需要哪些数据总线的字节。写数据 strobe 对于高效移动稀疏数据数组的缓存访问非常有用。除了使用写数据 strobe,您还可以通过使用不对齐的起始地址来优化数据传输。 写通道在数据总线上每个字节都有一个 strobe 位。这些位组成 WSTRB 信号。管理器必须确保只有包含有效数据的字节通道的写 strobe 被设置为 1。例如,考虑一个 64 位写数据总线。WSTRB 信号有 8 位,每个字节对应一位。下图展示了例子中 WSTRB 值指定哪些字节通道是有效的:

查看第一个示例,我们假设有效数据仅位于数据总线的前六个重要字节中,即从字节7到字节2。这意味着管理器必须使用十六进制值0xFC来控制WSTRB信号。

同样,其余示例指定有效数据总线字节通道如下:

  • 仅在数据总线的第2、3、4和5个字节中具有有效数据,则需要WSTRB信号值为0x3C。
  • 仅在数据总线的第0和第7个字节中具有有效数据,则需要WSTRB信号值为0x81。
  • 仅在数据总线的第3、5、6和7个字节中具有有效数据,则需要WSTRB信号值为0xE8。

字节通道 strobe 提供了稀疏数据数组的高效移动方式。使用此方法,可以通过将其余的传输字节通道 strobe 设置为0来提前终止写传输,尽管仍然必须完成其余的传输。WSTRB信号在传输事务之间也可以更改。

读取通道没有等效的信号。这是因为管理器指示所需的传输,并可以屏蔽从从属处接收到的任何不需要的字节。

使用锁定信号进行原子访问

使用锁定信号AxLOCK来指示原子访问操作正在进行。

AXI协议提供了两种机制来支持原子性:

• 锁定访问

锁定传输锁定通道,直到生成未锁定传输为止保持锁定状态。锁定访问类似于AHB协议支持的机制。当管理器使用AxLOCK信号进行交易以显示它是锁定式交易时,交叉连接必须确保只有该管理器可以访问目标从属区域,直到同一管理器的未锁定事务完成。 交叉连接内的仲裁器必须强制执行此限制。因为锁定访问要求交叉连接在锁定序列正在进行时防止任何其他事务发生,所以它们对交叉连接性能有重要影响。锁定事务只应用于旧设备。只有AXI3支持锁定访问。AXI4不支持锁定访问。

• 独占访问

独占访问比锁定事务更有效,它允许多个管理器同时访问从属。独占访问机制使得可以实现类似信号量操作,而无需在操作期间将总线锁定在特定的管理器上。因为锁定访问不如独占访问高效,并且大多数组件不需要锁定事务,所以它们已从AXI4协议中移除。 在AXI3中,AxLOCK信号由两位组成,具有以下值:

• 0b00 - 正常

• 0b01 - 独占

• 0b10 - 锁定

• 0b11 - 保留

在AXI4中,AxLOCK信号由一位组成,具有以下值:

• 0b0 - 正常

• 0b1 - 独占

QoS-服务质量

服务质量(Quality of service)是指AXI4协议引入的一些额外信号,以支持服务质量。 通过优先处理更重要的事务,服务质量允许您优化系统性能。这两个服务质量信号分别是:

• AWQOS:发送到每个写事务的写地址通道。

• ARQOS:发送到每个读事务的读地址通道。

这两个信号都是4位宽,其中值0x0表示最低优先级,而值0xF表示最高优先级。

服务质量的默认系统级实现是:任何具有多个事务选择的组件都会优先处理具有更高QoS值的事务。 下面的图显示了一个具有直接内存控制器(DMC)的示例系统,具体是DMC-400。该控制器管理到DRAM的事务。

实际上,一些元素(例如CPU)需要的内存访问比其他组件(如GPU或VPU)重要得多。

当适当的QoS值分配给事务时,互联器可以将优先级更高的事务优先于优先级较低的事务进行仲裁,DMC则重新排序事务以确保正确的优先级。

区域信令

区域信令是AXI4中的一种可选功能。 使用区域标识符意味着一个下属的单个物理接口可以提供多个逻辑接口。每个逻辑接口可以在系统地址映射中具有不同的位置。 当使用区域标识符时,下属不必支持不同逻辑接口之间的地址解码。 区域信令使用两个4位区域标识符,AWREGION和ARREGION。这些区域标识符可以唯一地标识最多16个不同的区域。

用户信号

AXI4接口信号集有选项包括一组用户定义信号,称为用户信号。 用户信号可以在每个通道上用于传输额外的自定义控制信息,以在管理器和下属组件之间传递。这些信号是可选的,不必在所有通道上都支持。如果使用它们,则用户信号的宽度由实现定义,并且可以在每个通道上不同。

   因为AXI协议没有定义这些用户信号的功能,所以如果两个组件以不兼容的方式使用相同的用户信号,就会出现互操作性问题。

AXI通道依赖

AXI协议定义了不同通道之间的依赖关系。 其中三个主要依赖关系如下:

1.WLAST传输必须在BVALID断言之前完成。

  • ◦ 管理器必须在写响应被管理器看到之前发送所有写数据。这种依赖关系在AXI3中不存在,但是在AXI4中引入了:
  • ◦ 在AXI3中,地址不必在发送写响应之前被看到。
  • ◦ 在AXI4中,所有数据和地址必须已经传输完成,才能让管理器看到写响应。

2.RVALID不能在ARADDR传输之前断言。

  • ◦ 下属不能传输任何读数据,除非它先看到地址。这是因为如果下属不知道将从哪个地址读取数据,则无法将数据发送回管理器。

3.WVALID可以在AWVALID之前断言。

  • ◦ 管理器可以使用写数据通道将数据发送到下属,然后再通知下属应该写入这些数据的地址。

6.原子访问

原子访问是指对内存区域进行一系列访问的术语。当管理器希望对特定的内存区域执行一系列访问,同时确保该区域的原始数据不会被其他管理器的写操作破坏时,就会使用原子访问。这个序列通常是一个读取、修改和写入的序列。 原子访问有两种类型:

  • 锁定型:当管理器使用锁定访问执行事务序列时,其他管理器对相同子节点的访问会被拒绝。
  • 排他型:当管理器成功地使用排他访问执行事务序列时,其他管理器可以访问子节点,但不能访问被访问的内存区域。

锁定访问 锁定事务仅应用于旧设备。AXI4不支持锁定事务,但AXI3实现必须支持锁定事务。 在管理器启动一系列锁定事务之前,必须确保它没有其他正在等待完成的事务。 带有AxLOCK信号设置的事务表示锁定事务。一系列锁定事务会强制互连拒绝其他管理器对子节点的访问。 锁定序列必须始终以一个没有AxLOCK信号设置的最终事务完成。这个最终事务仍然包含在锁定序列中,但实际上移除了锁定,以允许其他管理器访问子节点。 因为锁定访问需要互连防止在锁定序列进行时发生任何其他事务,所以它们对互连性能有重要影响。 下图展示了使用两个管理器M0和M1的示例来说明AXI锁定访问操作:

 在经理开始一个锁定的事务序列之前,必须确保没有其他正在等待完成的事务。当M0使用锁定信号表示它是一个锁定的事务时,互连使用仲裁器确保只有M0可以访问目标从属。互连将阻止任何来自M1的访问,直到来自M0的未锁定事务完成为止。以下图表显示了锁定访问如何与一系列事务一起工作的情况:

此示例的步骤如下: 1.经理M0启动一个读取、修改和写入的事务序列。第一个事务,读取,已经断言了锁定信号,表示它启动了一个锁定的事务。 2.互连锁定了任何其他事务。从此时起,经理M1不能访问从属。 3.序列中的最后一个事务,写入,没有断言锁定信号。此事务表示锁定序列的结束。互连解除了锁定,其他经理现在可以访问从属。

独占访问

在AXI 4中,相比于锁定访问,独占访问可以更有效地执行原子操作,因为独占访问可以更有效地利用互联带宽。 在独占访问序列中,其他管理器可以同时访问下级,但是同一内存范围只有一个管理器将被授予访问权限。 用于独占访问的机制可以提供信号量类型的操作,而不需要在操作期间总线始终专用于特定的管理器。这意味着总线访问延迟和最大可达带宽不受影响。 独占访问可以由多个数据传输组成,但是所有事务必须具有相同的地址通道属性。 下级需要硬件独占访问监视器来记录独占序列的事务信息,以便知道正在访问的内存范围和执行访问的管理器的身份。 如果在独占序列完成之前没有其他管理器访问监视范围,则访问是原子的。 下级对其他管理器的访问是开放的,这导致了系统整体带宽利用率的增加。

独占访问硬件监视器操作

独占访问的基本机制由您必须实现的独占访问监视器控制。 下面的图示例显示了M0管理器从地址进行独占读取的示例:独占访问监视器硬件的响应之一是:

• EXOKAY:读取该值,并将事务ID存储在独占访问监视器硬件中。

• OKAY:读取该值,但不支持独占访问,管理器应将此响应视为独占操作的错误。

稍后,如果在独占读取期间收到EXOKAY,则M0尝试通过对同一地址进行独占写入来完成独占序列。独占写入使用与独占读取相同的事务ID。

独占访问监视器硬件的响应之一是:

• EXOKAY:自独占读取访问以来,没有其他管理器对该位置进行写入,因此写入成功。在这种情况下,独占写入将更新内存。

• OKAY:另一个管理器(例如M1)自独占读取访问以来已经对该位置进行了写入,因此写入失败。在这种情况下,内存位置不会更新。 某些下级需要额外的逻辑来支持独占访问。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号