【总线】AXI4第七课时:AXI的额外的控制信息(PROT和CACHE)
大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计感兴趣,那你绝对不能错过我们今天的主角——AXI4总线。作为ARM公司AMBA总线家族中的佼佼者,AXI4以其高性能和高度可扩展性,成为了现代电子系统中不可或缺的通信桥梁。
上课时我们讲了AXI的寻址选项,本章节讲一下AXI的额外的控制信息。
大家可能经常看到AXI使用的程序里有未连接的信号,如*_prot、*_cache,这些信号为什么不连接,AXI总线也可以工作呢?本章节就来解释下这个问题。
- *_prot:AXI总线的保护单元支持,
- *_cache:系统级缓存和其他性能增强组件的支持
这里会有一系列的课程,和大家分享AMBA总线家族,欢迎大家一起学习,收藏点赞。
系列文章
【总线】AMBA总线架构的发展历程-CSDN博客
【总线】设计fpga系统时,为什么要使用总线?-CSDN博客
【总线】AXI总线:FPGA设计中的通信骨干-CSDN博客
【总线】AMBA总线家族的明星成员:AXI协议简介-CSDN博客
【总线】AXI4第一课时:揭秘AXI4总线的五大独立通道-CSDN博客
【总线】AXI4第二课时:深入AXI4总线的基础事务-CSDN博客
【总线】AXI4第三课时:握手机制-CSDN博客
【总线】AXI4第五课时:信号描述-CSDN博客
【总线】AXI4第六课时:寻址选项深入解析-CSDN博客
【总线】AXI4第七课时:AXI的额外的控制信息(PROT和CACHE)-CSDN博客
原理
缓存支持
系统级缓存和其他性能增强组件的支持是由缓存信息信号 ARCACHE 和 AWCACHE 提供的。这些信号提供了关于事务可以如何处理的额外信息。
ARCACHE[3:0] 或 AWCACHE[3:0] 信号通过提供以下事务属性来支持系统级缓存:
- 可缓冲 (B) 位,ARCACHE[0] 和 AWCACHE[0]:当此位为高时,意味着互连体或任何组件可以延迟事务到达其最终目的地,延迟的周期可以是任意的。这通常仅与写入有关。
- 可缓存 (C) 位,ARCACHE[1] 和 AWCACHE[1]:当此位为高时,意味着在最终目的地的事务不需要与原始事务的特性相匹配。
对于写入,这意味着可以合并多个不同的写入。
对于读取,这意味着可以为多个读取事务预取一个位置,或者只为一个位置获取一次。
- 读分配 (RA) 位,ARCACHE[2] 和 AWCACHE[2]:当 RA 位为高时,意味着如果传输是一个缓存未命中的读取,则应该进行分配。如果 C 位为低,则 RA 位不能为高。
- 写分配 (WA) 位,ARCACHE[3] 和 AWCACHE[3]:当 WA 位为高时,意味着如果传输是一个缓存未命中的写入,则应该进行分配。如果 C 位为低,则 WA 位不能为高。

在写事务的情况下,AWCACHE 信号可以用来确定哪个组件提供写响应。如果写事务被标记为可缓冲的,那么由桥接或系统级缓存提供写响应是可以接受的。然而,如果事务被标记为不可缓冲的,那么写响应必须来自事务的最终目的地。
AXI协议并不决定缓冲或缓存数据到达目的地的机制。例如,系统级缓存可能有控制器来管理清除、冲刷和使缓存条目无效。另一个例子是包含写缓冲区的桥接器,如果它接收到一个具有匹配事务ID的不可缓冲写入,它可能有控制逻辑来排空缓冲区。
保护单元支持
为了支持复杂的系统设计,通常需要互连体和系统中其他设备提供对非法事务的保护。AWPROT 或 ARPROT 信号提供了三个级别的访问保护:
- 普通或特权,ARPROT[0] 和 AWPROT[0]:
低电平表示普通访问。
高电平表示特权访问。这被一些主设备用来表示它们的处理模式。特权处理模式通常在系统中拥有更高级别的访问权限。
- 安全或非安全,ARPROT[1] 和 AWPROT[1]:
低电平表示安全访问。
高电平表示非安全访问。这在需要更高程度区分处理模式的系统中使用。
- 指令或数据,ARPROT[2] 和 AWPROT[2]:
低电平表示数据访问。
高电平表示指令访问。这个位提供了事务是指令访问还是数据访问的指示。

为什么可以不连ARCACHE和ARPROT
在实际应用中,可能会发现某些AXI信号,如ARCACHE和ARPROT,没有被所有系统或设计所使用。这种情况的原因可能包括:
- 系统简化:在一些简单的系统设计中,可能不需要复杂的缓存策略或保护机制。因此,设计者可能会选择忽略这些信号以简化设计和减少开销。
- 性能考虑:实现这些信号可能需要额外的硬件资源和逻辑。在对性能要求不高或对成本敏感的应用中,可能会省略这些功能。
- 特定应用:有些应用可能有特定的缓存或保护需求,这可能由软件或操作系统管理,而不是通过硬件信号控制。
- 安全和可靠性:在安全关键的应用中,可能会更加谨慎地使用这些信号,以确保系统的安全和可靠性。
- 特定类型的AXI:AXI协议有多个变种(如AXI, AXI-Lite, AXI-Stream等),某些变种可能不支持或不需要所有的AXI信号。
重要的是要理解,AXI协议提供了一套丰富的信号和特性,以支持广泛的应用场景。设计者可以根据他们的具体需求选择性地实现这些特性。在学习过程中,了解这些信号的完整功能和潜在用途是有价值的,即使在某些实际应用中它们可能不被使用。
应用案例
应用案例 1:多核处理器系统中的缓存一致性
场景描述:在一个多核处理器系统中,每个核心都有自己的缓存。当一个核心的数据被修改后,系统需要确保其他核心的相应缓存行是一致的。
应用点:使用 ARCACHE 和 AWCACHE 信号来标识数据的缓存属性,如是否可以被合并或分配,从而帮助维护缓存一致性。
应用案例 2:嵌入式系统中的内存保护
场景描述:在嵌入式系统中,不同的软件模块可能需要不同级别的访问权限,如操作系统内核和用户应用程序。
应用点:利用 ARPROT 信号中的保护级别来确保安全访问,防止用户级应用程序访问或修改内核数据。
应用案例 3:高性能计算中的缓存策略
场景描述:在高性能计算(HPC)系统中,缓存的使用对于系统性能至关重要。系统需要智能地管理数据的缓存,以减少内存访问延迟。
应用点:通过 ARCACHE 和 AWCACHE 信号的配置,实现高效的缓存策略,如写回(write-back)或写穿透(write-through)。
应用案例 4:虚拟化环境中的内存管理
场景描述:在虚拟化环境中,多个虚拟机(VM)共享同一个物理硬件资源。每个VM都需要有自己的内存空间和保护级别。
应用点:使用 ARPROT 信号来区分不同VM的访问权限,确保虚拟化环境中的内存安全和隔离。
应用案例 5:实时系统中的确定性响应
场景描述:在实时系统中,对任务的完成时间有严格的要求。系统需要快速响应外部事件,如传感器数据的采集和处理。
应用点:通过优化 ARCACHE 和 AWCACHE 信号的使用,减少缓存引起的不确定性,确保系统能够提供确定性的响应。
应用案例 6:分布式共享内存系统中的一致性
场景描述:在分布式共享内存(DSM)系统中,多个处理器或节点共享同一块内存区域。
应用点:利用 ARCACHE 和 AWCACHE 信号来维护数据在不同节点间的一致性,确保所有节点看到的是最新的数据副本。
相关文章:
【总线】AXI4第七课时:AXI的额外的控制信息(PROT和CACHE)
大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计感兴趣,那你绝对不能错过我们今天的主角——AXI4总线。作为ARM公司AMBA总线家族中的佼佼者,AXI4以其高性能和高度可扩展性,成为了现代电子系统中不可或缺的通信桥梁…...
MAVEN 重新配置参考
【笔记04】下载、配置 MAVEN(配置 MAVEN 本地仓库)(MAVEN 的 setting.xml)-阿里云开发者社区 windows 系统环境变量 MAVEN_HOME 也可以改一下...
ByteTrack论文阅读笔记
目录 ByteTrack: Multi-Object Tracking by Associating Every Detection Box摘要INTRODUCTION — 简介BYTE算法BYTE算法用Python代码实现实验评测指标轻量模型的跟踪性能 总结SORT算法简介ByteTrack算法和SORT算法的区别 ByteTrack: Multi-Object Tracking by Associating Eve…...
LVS+Keepalived 高可用集群搭建实验
192.168.40.204lvs+keepalivedlvs-k1192.168.40.140lvs+keepalivedlvs-k2192.168.40.150nginx官方教程web-1192.168.40.151nginxepel阿里云源web-2Woo79 | LVS+Keepalived 高可用集群搭建 (图文详解小白易懂) doctor @yang | 生产环境必备的LVS+Keepalived ,超级详细的原理…...
代码随想三刷动态规划篇7
代码随想三刷动态规划篇7 198. 打家劫舍题目代码 213. 打家劫舍 II题目代码 337. 打家劫舍 III题目代码 121. 买卖股票的最佳时机题目代码 198. 打家劫舍 题目 链接 代码 class Solution {public int rob(int[] nums) {if(nums.length1){return nums[0];}if(nums.length2){…...
linux应用开发基础知识(八)——内存共享(mmap和system V)
mmap内存映射 内存共享定义 内存映射,简而言之就是将用户空间的一段内存区域映射到内核空间,映射成功后,用户对这段内存区域的修改可以直接反映到内核空间,同样,内核空间对这段区域的修改也直接反映用户空间。那么对…...
上海小程序开发需要进行定制开发吗?
随着互联网技术与移动设备的不断成熟,小程序也已普及到人们日常生活的方方面面。随着企业与互联网联结的愈发深入,小程序的开发可以为企业带来更高效的经营模式,降本增效。那么,上海小程序作为无需安装且开发门槛较低的应用&#…...
Qt开发 | qss简介与应用
文章目录 一、qss简介与应用二、QLineEdit qss介绍与使用三、QPushButton qss1.常用qss1.1 基本样式表1.2 背景图片1.3 图片在左文字在右 2.点击按钮弹出菜单以及右侧箭头样式设置3.鼠标悬浮按钮弹出对话框 四、QCheckBox qss妙用:实时打开关闭状态按钮五、QComboBo…...
模块一SpringBoot(一)
maven记得配置本地路径和镜像 IJ搭建 SpringIntiallizer--》将https://start.spring.io改成https://start.aliyun.com/ 项目结构 Spring有默认配置, application.properties会覆盖默认信息: 如覆盖端口号server.port8888...
C语言 | Leetcode C语言题解之第213题打家劫舍II
题目: 题解: int robRange(int* nums, int start, int end) {int first nums[start], second fmax(nums[start], nums[start 1]);for (int i start 2; i < end; i) {int temp second;second fmax(first nums[i], second);first temp;}retur…...
Linux LVS 负载均衡群集
在业务量达到一定量的时候,往往单机的服务是会出现瓶颈的。此时最常见的方式就是通过负载均衡来进行横向扩展。其中我们最常用的软件就是 Nginx。通过其反向代理的能力能够轻松实现负载均衡,当有服务出现异常,也能够自动剔除。但是负载均衡服…...
onTouch()与onTouchEvent()的区别
onTouch()和onTouchEvent()是Android中处理触摸事件的两个重要方法。它们用于不同的场景,并在事件分发机制中扮演不同的角色。以下是它们的详细区别和使用方法: onTouch() 方法 定义:onTouch(View v, MotionEvent event)是View.OnTouchList…...
计算机网络网络层复习题2
一. 单选题(共22题,100分) 1. (单选题)如果 IPv4 数据报太大,会在传输中被分片,对分片后的数据报进行重组的是( )。 A. 中间路由器B. 核心路由器C. 下一跳路由器D. 目的主机 我的答案: D:目的…...
[JS]面向对象ES6
class类 ES6是基于 class关键字 创建类 <script>// 1.定义类class Person {// 公有属性name// 公有属性 (设置默认值)age 18// 构造函数constructor(name) {// 构造函数的this指向实例化对象// 构造函数的作用就是给实例对象设置属性this.name name// 动态添加属性(不…...
ctfshow web sql注入 web242--web249
web242 into outfile 的使用 SELECT ... INTO OUTFILE file_name[CHARACTER SET charset_name][export_options]export_options:[{FIELDS | COLUMNS}[TERMINATED BY string]//分隔符[[OPTIONALLY] ENCLOSED BY char][ESCAPED BY char]][LINES[STARTING BY string][TERMINATED…...
发送微信消息和文件
参考:https://www.bilibili.com/video/BV1S84y1m7xd 安装: pip install PyOfficeRobotimport PyOfficeRobotPyOfficeRobot.chat.send_message(who"文件传输助手", message"你好,我是PyOfficeRobot,有什么可以帮助…...
数组-螺旋矩阵
M螺旋矩阵 ||(leetcode59) /*** param {number} n* return {number[][]}*/ var generateMatrix function(n) {const maxNum n * n;let curNum 1;const matrix new Array(n).fill(0).map(() > new Array(n).fill(0));let row 0,column 0;const d…...
GitStack详细配置与使用指南
1.引言 GitStack是一个功能强大的Git服务器管理工具,专为Windows环境设计。它提供了一个用户友好的Web界面,使得在Windows服务器上管理Git仓库变得简单高效。本文将详细介绍GitStack的安装、配置和使用方法,帮助您快速搭建自己的Git服务器。 2.GitStack安装 2.1 系统要求 Wi…...
LoadRunner-Virtual User Generator组件学习
重点知识 LR工具是拿C写的,所以它的脚本默认也是C,但是最终生成的脚本不止是C,它是支持C和Java语言的,这个大家要清楚,对本身懂代码的就很友好,你了解java,那就可以把脚本改成java,…...
NAT地址转换实验,实验超简单
实验拓扑 实验目的 将内网区域(灰色区域)的地址转换为172.16.1.0 实验过程 配置静态NAT(基于接口的静态NAT) R1配置 <Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]sysname R1 [R1]un in en I…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
