当前位置: 首页 > news >正文

【总线】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,没有被所有系统或设计所使用。这种情况的原因可能包括:

  1. 系统简化:在一些简单的系统设计中,可能不需要复杂的缓存策略或保护机制。因此,设计者可能会选择忽略这些信号以简化设计和减少开销。
  2. 性能考虑:实现这些信号可能需要额外的硬件资源和逻辑。在对性能要求不高或对成本敏感的应用中,可能会省略这些功能。
  3. 特定应用:有些应用可能有特定的缓存或保护需求,这可能由软件或操作系统管理,而不是通过硬件信号控制。
  4. 安全和可靠性:在安全关键的应用中,可能会更加谨慎地使用这些信号,以确保系统的安全和可靠性。
  5. 特定类型的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

题目&#xff1a; 题解&#xff1a; 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 负载均衡群集

在业务量达到一定量的时候&#xff0c;往往单机的服务是会出现瓶颈的。此时最常见的方式就是通过负载均衡来进行横向扩展。其中我们最常用的软件就是 Nginx。通过其反向代理的能力能够轻松实现负载均衡&#xff0c;当有服务出现异常&#xff0c;也能够自动剔除。但是负载均衡服…...

onTouch()与onTouchEvent()的区别

onTouch()和onTouchEvent()是Android中处理触摸事件的两个重要方法。它们用于不同的场景&#xff0c;并在事件分发机制中扮演不同的角色。以下是它们的详细区别和使用方法&#xff1a; onTouch() 方法 定义&#xff1a;onTouch(View v, MotionEvent event)是View.OnTouchList…...

计算机网络网络层复习题2

一. 单选题&#xff08;共22题&#xff0c;100分&#xff09; 1. (单选题)如果 IPv4 数据报太大&#xff0c;会在传输中被分片&#xff0c;对分片后的数据报进行重组的是&#xff08; &#xff09;。 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…...

发送微信消息和文件

参考&#xff1a;https://www.bilibili.com/video/BV1S84y1m7xd 安装&#xff1a; pip install PyOfficeRobotimport PyOfficeRobotPyOfficeRobot.chat.send_message(who"文件传输助手", message"你好&#xff0c;我是PyOfficeRobot&#xff0c;有什么可以帮助…...

数组-螺旋矩阵

M螺旋矩阵 ||&#xff08;leetcode59&#xff09; /*** 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写的&#xff0c;所以它的脚本默认也是C&#xff0c;但是最终生成的脚本不止是C&#xff0c;它是支持C和Java语言的&#xff0c;这个大家要清楚&#xff0c;对本身懂代码的就很友好&#xff0c;你了解java&#xff0c;那就可以把脚本改成java&#xff0c;…...

NAT地址转换实验,实验超简单

实验拓扑 实验目的 将内网区域&#xff08;灰色区域&#xff09;的地址转换为172.16.1.0 实验过程 配置静态NAT&#xff08;基于接口的静态NAT&#xff09; R1配置 <Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]sysname R1 [R1]un in en I…...

如何用deberta-v3-base-zeroshot-v2.0构建企业级NLP应用?完整教程来了

如何用deberta-v3-base-zeroshot-v2.0构建企业级NLP应用&#xff1f;完整教程来了 【免费下载链接】deberta-v3-base-zeroshot-v2.0 项目地址: https://ai.gitcode.com/hf_mirrors/NingBo_Ascend/deberta-v3-base-zeroshot-v2.0 deberta-v3-base-zeroshot-v2.0是一款基…...

告别道路预测老套路:用ParkPredict+模型思路,解决停车场里的‘鬼探头’难题

破解泊车场景预测困局&#xff1a;ParkPredict模型的技术革新与实践停车场里的每一次转向、倒车和避让&#xff0c;都是对自动驾驶系统预测能力的极限挑战。与开放道路的规则明确不同&#xff0c;这里没有清晰的车道线指引&#xff0c;没有统一的行驶方向&#xff0c;只有随时可…...

QMCDecode终极指南:3步解锁QQ音乐加密格式,实现跨平台音乐自由

QMCDecode终极指南&#xff1a;3步解锁QQ音乐加密格式&#xff0c;实现跨平台音乐自由 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目…...

如何快速上手DeepPurpose?5分钟完成你的第一个药物-靶点相互作用预测模型

如何快速上手DeepPurpose&#xff1f;5分钟完成你的第一个药物-靶点相互作用预测模型 【免费下载链接】DeepPurpose A Deep Learning Toolkit for DTI, Drug Property, PPI, DDI, Protein Function Prediction (Bioinformatics) 项目地址: https://gitcode.com/gh_mirrors/de…...

淘宝淘金币自动化脚本终极指南:如何每天节省25分钟实现智能任务管理

淘宝淘金币自动化脚本终极指南&#xff1a;如何每天节省25分钟实现智能任务管理 【免费下载链接】taojinbi 淘宝淘金币自动执行脚本&#xff0c;包含蚂蚁森林收取能量&#xff0c;芭芭农场全任务&#xff0c;解放你的双手 项目地址: https://gitcode.com/gh_mirrors/ta/taoji…...

用PyTorch复现FactorVAE:一个能同时预测收益和风险的量化模型实战教程

用PyTorch实战FactorVAE&#xff1a;构建收益与风险双预测的量化模型 在量化投资领域&#xff0c;传统线性因子模型正逐渐被非线性机器学习方法所取代。然而金融数据特有的低信噪比特性&#xff0c;使得直接从市场数据中提取有效因子成为一项艰巨挑战。本文将深入探讨如何利用P…...

DLA功耗优化验证:tegrastats实战指南

重磅预告&#xff1a;本专栏将独家连载系列丛书《智能体视觉技术与应用》部分精华内容&#xff0c;该书是世界首套系统阐述“因式智能体”视觉理论与实践的专著&#xff0c;特邀美国 TypeOne 公司首席科学家、斯坦福大学博士 Bohan 担任技术顾问。Bohan先生师从美国三院院士、“…...

WorkshopDL终极指南:无需Steam客户端也能轻松下载创意工坊模组

WorkshopDL终极指南&#xff1a;无需Steam客户端也能轻松下载创意工坊模组 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了游戏&#xff0…...

UE4插件开发实战:手把手教你为自定义资源创建独立的3D预览窗口(基于SEditorViewport)

UE4插件开发实战&#xff1a;打造自定义资源的3D预览视口在虚幻引擎4的编辑器扩展开发中&#xff0c;为自定义资源提供直观的3D预览功能是提升工具链效率的关键环节。想象一下&#xff0c;当技术美术师调整一把自定义武器的参数时&#xff0c;能够实时看到模型变化&#xff0c;…...

大学生零成本副业!SRC 漏洞挖掘入门教程,玩法收益一次性讲清

大学生零成本副业&#xff01;SRC 漏洞挖掘入门教程&#xff0c;玩法收益一次性讲清 摘要&#xff1a;对大学生来说&#xff0c;找副业最核心的需求是“时间灵活、门槛低、能兼顾学习、有长期成长”&#xff0c;而SRC漏洞挖掘正是完美契合这些需求的选择——无需编程基础、无需…...