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

独占内存访问工作原理

前面已经介绍了 LDXR  指令。 LDXR 是内存加载指令的一种, 不过它会通过独占监视器(exclusive monitor)来监控对内存的访问。

一、什么是独占监视器

LDXR 指令本质上也是 LDR 指令, 只不过在 ARM64 处理器内部使用一个独占监视器的硬件来监
视它的状态。独占监视器一共有两个状态——开放访问状态(Open)和独占访问状态(Exclusive )。
当 CPU 通过 LDXR 指令从内存加载数据时, CPU 会把这个内存地址标记为独占访问,然后 CPU 内部的独占监视器的状态变成独占访问状态。当 CPU 执行 STXR 指令的时候,需要根据独占监视器的状态来做决定。
如果独占监视器的状态为独占访问状态,并且 STXR 指令要存储的地址正好是刚才使用LDXR 指令标记过的,那么 STXR 指令存储成功, STXR 指令返回 0,独占监视器的状态变成开放访问状态。

如果独占监视器的状态为开放访问状态,那么 STXR 指令存储失败, STXR 指令返回 1,
独占监视器的状态不变,依然保持开放访问状态。
 

二、独占监视器的分类

2.1本地独占监视器(local monitor): 这类监视器处于处理器的 L1 内存子系统中。 L1 内存
子系统支持独占加载、 独占存储、 独占清除等这些同步原语。对于非共享(non-shareable)
的内存,本地独占监视器可以支持和监视它们。

2.2 内部缓存一致性全局独占监视器(internal coherent global monitor):这类全局监视器会利
用多核处理器的 L1 高速缓存一致性相关信息来实现独占监视。 这类全局监视器适合监视普通类型的内存,并且内存属性是共享,对应的高速缓存的策略是写回。这种情况下需要软件打开 MMU 并且使能高速缓存才能生效。 这类全局监视器可以驻留在处理器的 L1内存子系统中,也可以驻留在 L2 内存子系统中, 通常需要和本地独立监视器协同工作。

2.3 外部全局独占监视器(external global monitor): 这种外部全局独占监视器通常位于芯片的
内部总线(interconnect bus) 中, 例如, AXI 总线支持独占方式的读操作(read-exclusive)
和独占方式的写操作(write-exclusive)。当访问设备类型的内存地址或者访问内部共享但是没有使能高速缓存的内存地址时,我们就需要这种外部全局独占监视器通常缓存一致性控制器支持这种独占监视器。
 

参考:

Exclusive monitor在spinlock中的应用 - 哔哩哔哩

独占访问指令与内存管理:局部与全局监视器-CSDN博客

ARM系列--同步原语-电子发烧友网

相关文章:

  • 题目 3326: 蓝桥杯2025年第十六届省赛真题-最短距离
  • Linux 内核学习(9) --- Linux sysfs 文件系统
  • 驱动: file_operations、register_chrdev、/proc 文件系统概述
  • Android 启动流程开发注意事项
  • 删除链表的倒数第N个结点--LeetCode
  • 5.25本日总结
  • MySQL的查询进阶
  • 中断和信号详解
  • 嵌入式软件--DAY8 IIC通讯下 硬件实现
  • 什么是maven(详细介绍)
  • MMDetection3D最全源码安装教程
  • 量子力学:量子力学为什么不属于经典物理学的范畴?
  • NISP和CISP有什么区别,哪个更好
  • JAVA 关键词
  • Mac系统-最方便的一键环境部署软件ServBay(支持php,java,python,node,go,mysql等)没有之一,已亲自使用!
  • 【LeetCode】大厂面试算法真题回忆(99)--Linux发行版的数量
  • TCP 的四次挥手
  • PTA刷题笔记(难度预警!!!有详解)
  • 再写数的划分(dfs)
  • 第四章 面向对象(基础)
  • 好sf123网站123/私域运营软件
  • 今天下午疫情发布会直播/seo流量排名工具
  • 做百度网站/公司网站域名续费一年多少钱
  • 网站建设肆金手指排名/南宁seo营销推广
  • 博客可以做网站收录用的吗/苏州关键词seo排名
  • 南京做网站的公司排名/百度seo服务公司