AXI4协议学习(三) Transaction属性(ARCACHE和AWCACHE信号)

本文详细解析了AXI4规范中的Modifiable和Non-modifiable事务的区别,包括事务的拆分与合并规则,以及AXI4存储类型的特性与要求。强调了不同存储类型在读写响应、数据获取源、事务修改能力、缓存行为和事务顺序等方面的具体规定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转至https://blog.youkuaiyun.com/u014395662/article/details/79687860

Modifiable和Non-modifiable transaction

注:用AxCACHE[3:0]表示ARCACHE[3:0]信号或者AWCACHE[3:0]信号

 

Non-modifiable transaction

 

    ★Non-modifiable:当AxCACHE[1] = Low,则是Non-modifiable  

    ★Non-modifiabletransaction 不能被拆分成多个transactions也不能与其它transactions合并。

    ★下图所示的信号在传输过程中不能被改变:

    

    注意:

    如果一个Non-modifiable transaction的burst length大于16,或者在AxSIZE比总线宽度大的时候,必须将transaction拆解掉,那么它可以被拆解成多个transactions,那么:

    ◆每个transaction的burst length会减少

    ◆各个bursts的地址字段也会相应变化

    这些变化都是被允许的

    ★传输过程中transaction ID和QoS信号可以被改变

 

Modifiable transaction

    

    ★一个transaction可以被分解成多个transactions

    ★多个transactions可以合并成一个transaction

    ★读transaction可以fetch比所需更多的data

    ★写transaction可以access比所需更大的地址范围,但是要用WSTRB信号标出有效地址

    ★AxADDR、AxSIZE、AxLEN、AxBURST可以被改变

    ★AxLOCK、AxPROT不能被改变

 

AXI4存储类型

    ★AXI4里面的存储类型如下图所示:

    

    注:表中没有出现的AxCACHE的值被保留

    ★各存储类型的要求:

 

        ▼DeviceNon-bufferable:

            ◆write response必须从final destination得到

            ◆Read data 必须从final destination得到

            ◆Transactions are non-modifiable(cacheable)

            ◆读不能被prefetched,写不能被merged.

            ◆来自于同一ID并到同一个Slave的所有Non-modifiable 读写 transactions必须保持顺序。

        ▼Device Bufferable:

            ◆write response可以从一个中间节点得到

            ◆Write transaction必须对final destination及时可见(也就是说,Write transaction 必须到达final destination, 而不能被永远存在buffer里)

            ◆Read data必须从final destination得到

            ◆Transactions are non-modifiable

            ◆读不能被prefetched,写不能被merged.

            ◆来自于同一ID并到同一个Slave的所有Non-modifiable 读写 transactions必须保持顺序。

    !对于读transactions,Device Non-bufferable 与 Device Bufferable的Memory type requirements 相同

        ▼Normal Non-Cacheable Non-bufferable

            ◆write response必须从finaldestination 得到

            ◆Read data 必须从final destination得到

            ◆Transactions are modifiable

            ◆写可以merge

            ◆到有重叠目的地址的来自于同一ID的读写transactions必须保持顺序

        ▼Normal non-cacheable bufferable

            ◆write response可以从一个中间节点得到

            ◆Write transaction必须对finaldestination及时可见

            ◆Read data 要么从final destination 得到,要么从一个正在到它的final destination 的write transaction得到(“它”指write transaction)

            ◆如果read data从一个write transaction得到,它必须是该write的最近版本,并且,这个data不能被缓存下来。

            ◆到有重叠目的地址的来自于同一ID的读写transactions必须保持顺序

        ▼write-through No-allocate

            ◆write response可以从一个中间节点得到

            ◆Write transaction必须对finaldestination及时可见

            ◆Read data可以从中间的cache得到

            ◆Transactions are modifiable

            ◆Reads可以被prefetched

            ◆Writes可以被merged

            ◆Cache lookup is required

            ◆到有重叠目的地址的来自于同一ID的读写transactions必须保持顺序

            ◆建议不要对read and write transactions 进行 allocation操作

        ▼Write-through Read-allocate/ Write-through Write-allocate/Write-throughRead and Write-allocate

            ◆同Write-through no allocate

        ▼Write back No-allocate

            ◆write response可以从一个中间节点得到

            ◆Write transaction可以对finaldestination不及时可见

            ◆Read data可以从中间的cache得到

            ◆Transactions are modifiable

            ◆Reads可以被prefetched

            ◆Writes可以被merged

            ◆Cache lookup is required

            ◆到有重叠目的地址的来自于同一ID的读写transactions必须保持顺序

            ◆建议不要对read and write transactions 进行 allocation操作

        ▼Write-back Read-allocate/ Write-back Write-allocate/Write-back Read and Write-allocate

             ◆同Write-back no allocate

 

Mismatched AXI4 存储属性

    

        ▼多个Masters在尝试access同一个memory area的时候,会出现mismatched memory attributes.

        ▼所有的Masters必须在Cacheability上达成共识:

            ◆AxCACHE[3:2]=00则是not cacheable

            ◆AxCACHE[3:2]!=00则是cacheable

        ▼对于Bufferable的region,所有Master可以通过non-bufferable的transaction去access它

      ▼对于Normal Non-cacheable的region,所有Master可以通过Device memory transaction(Device Bufferable和Device Non-bufferable)去access它

### AXI Protocol 中 AW Channel Signals 的作用与用法 #### 1. **AWPROT** `AWPROT[2:0]` 是一个保护信号,用于描述传输数据的安全性权限级别。它通常由主设备设置,并传递给从设备以决定该事务是否可以执行以及如何处理。 - `AWPROT[2]`: 表明当前事务是否为特权模式操作。 - `AWPROT[1]`: 指定当前事务是读还是写操作(尽管这通常是冗余的,因为已经通过地址通道区分)。 - `AWPROT[0]`: 定义当前事务是否需要安全上下文的支持。 此信号主要用于多核处理器环境下的安全性管理[^1]。 --- #### 2. **AWCACHE** `AWCACHE[3:0]` 提供关于事务的缓存属性的信息。这些信息帮助系统中的其他组件(如缓存控制器或存储器子系统)优化性能并减少延迟。 - `AWCACHE[3]`: 缓冲能力指示位,表明事务是否可以通过共享缓冲区进行临时存储。 - `AWCACHE[2:0]`: 描述具体的缓存策略,例如不可缓存、写回缓存或其他特定行为。 这种机制允许设计人员灵活配置系统的缓存一致性模型[^2]。 --- #### 3. **AWQOS** `AWQOS[3:0]` 定义了服务质量 (Quality of Service, QoS),即优先级等级。不同的事务可以根据其重要程度分配不同的权重,从而影响调度顺序服务时间。 高优先级的任务会获得更快的服务响应速度;而低优先级任务则可能会经历更长的等待周期。这一特性特别适用于实时操作系统或多任务环境中资源竞争的情况[^3]。 --- #### 4. **AWREGION** `AWREGION[3:0]` 将整个地址空间划分为多个逻辑区域。每个区域都可以独立配置访问规则或者映射到特定的功能模块上。 当目标是从设备仅支持有限数量的分区时,则需遵循如下原则之一来应对超出范围请求: - 返回错误应答; - 自动重定向至有效区域内最接近位置继续工作流程[^4]。 --- #### 5. **AWUSER** `AWUSER[n-1:0]` 属于用户自定义字段集合的一部分,长度取决于具体实现情况 (`n`) 。它可以用来携带应用程序特有的元数据或者其他扩展功能标记,在标准框架之外增加额外灵活性。 比如调试工具链可能利用此类参数追踪路径轨迹或是标注特殊事件发生时刻以便后续分析之用。 --- ```python def axi_aw_channel_signals(): """ This function demonstrates the usage of various AXI AW channel signals. Returns: dict: A dictionary containing descriptions of each signal. """ return { 'AWPROT': 'Defines security attributes such as privilege level.', 'AWCACHE': 'Indicates caching policies like write-back or no-cache behavior.', 'AWQOS': 'Specifies priority levels to manage resource contention effectively.', 'AWREGION': 'Divides address space into logical sections with distinct configurations.', 'AWUSER': 'Carries application-specific metadata not covered by standard definitions.' } print(axi_aw_channel_signals()) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值