0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ARM系列--同步原语

安芯教育科技 来源:老秦谈芯 2023-01-05 14:18 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在具有多个执行线程的系统中,某些资源可能不能同时被访问或者修改。这些资源可以是外围设备或内存缓冲区和数据结构,例如打印机不会在一个时刻响应多个访问。这就需要一些同步机制去处理这些资源的同时控制(concurrency control)问题。需要注意的是,这里说的“同步”,不是同时的意思,而是协同的意思。某个资源使用受限的情况下,你用完了我用,大家协同工作。

可以通过“锁(lock)”机制来实现同步,对这些不能同时被访问的共享资源提供一个锁。线程在访问这些资源之前必须先获得锁权限。这时,如果其它线程也想申请锁,会发现锁被占用,只能等待锁被释放。拥有锁的线程在访问结束后,必须释放锁,以便其它的线程可以继续访问。

可以使用内存中的变量来实现简单的锁,该变量可以包含两个值(状态):LOCKED和UNLOCKED。进程如果发现这个锁是UNLOCKED状态,即可以修改为LOCKED,并拥有该资源的访问权限。

5a0693ee-8cb5-11ed-bfe3-dac502259ad0.png

图中的整个过程分为三个步骤:

读内存中的变量,并做状态比较;

修改寄存器值;

写内存变量。

在具有多个核或线程的系统中,此方法容易受到另一个线程的攻击,即在变量值的第一次读取和回写之间修改内存中的值。

这个问题可以用软件解决,也可以用额外的硬件功能来解决。一种解决方案可以是使“读-比较-修改-写(read-compare-modify-write)”的原子操作指令。ARM架构的早期版本使用SWP指令实现类似的功能。

ARMv8-A使用下面要介绍的,一种特殊类型的加载和存储指令来检测内存中的值自上次读取以来是否发生了变化。ARMv8-A 64位指令集提供了两条独占指令LDXR(Load Exclusive)和STXR(Store Exclusive)。

当使用LDXR指令读取地址时,会将其标记为独占访问。如果使用STXR指令向标记为独占的地址写入,则会清除独占状态。尝试使用STXR指令向未标记为独占的地址写入将会失败。地址的独占状态由称为独占监视器(Exclusive Monitor)的硬件维护。

使用独占load/store后的锁实现:

5a2e9326-8cb5-11ed-bfe3-dac502259ad0.png

锁值的更新不能保证是原子的,但现在可以检测到初始读取和更新之间的任何更改。如果独占存储失败,软件可以再次尝试获取锁。

前面提到过,需要对标记为独占的地址进行监控。独占监视器可以是一个简单的状态机,其状态可以是开放的(open)和独占的(exclusive)。ARM架构定义了两种不同的状态机:本地独占监视器(Local Exclusive Monitor)和全局独占监视器(Global Exclusive Monitor)。

根据被访问地址的可共享性属性,检查本地监视器或全局监视器的独占访问。

对于Non-shareable地址的独占访问检查仅在本地独监视器。

对shareable地址的独占访问检查在本地监视器或全局监视器。

每个处理器核都有一个与其关联的本地监视器。本地监视器可以构造为保存特定地址的独占状态,也可以构造为不保存该地址。本地监视器作为处理器的一部分实现。

全局监视器在多个处理器核之间共享。与本地监视器一样,它们只需要监视一个地址,如果监视器可以标记多个地址,则每个地址都有自己的状态机。

ARM体系结构要求以下内存类型能够与全局监视器一起工作:

5a3a7c36-8cb5-11ed-bfe3-dac502259ad0.png

如果程序无法获得锁,会不断尝试申请锁。但是这样会浪费处理器的资源,并且消耗不必要的功耗。有几种方式可以改善这个问题。对于在释放锁之前等待时间相对较长的情况,锁代码可以返回给操作系统调度程序,这允许在释放锁之前调度其它线程。

对于锁可能快速被释放的情况,ARM架构有一种机制,即允许处理器暂停执行,进入低功耗模式,等待锁被释放。ARM提供WFE(Wait For Event)指令,如果处理器申请锁失败,程序可以执行WFE进入等待。以前的做法是,负责释放锁的代码中会执行SEV(Send Event)指令,通过发送EVENT唤醒正在等待锁资源的处理器核。现在ARMv8-A架构中,清除全局监视器会自动向所有连接的处理器核发送EVENT唤醒。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    135

    文章

    9501

    浏览量

    388908
  • 寄存器
    +关注

    关注

    31

    文章

    5590

    浏览量

    129110
  • 变量
    +关注

    关注

    0

    文章

    615

    浏览量

    29374

原文标题:技术分享 | ARM系列 -- 同步原语

文章出处:【微信号:Ithingedu,微信公众号:安芯教育科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Arm SystemReady研讨会圆满召开

    /ODM 等广泛领域的 Arm 生态伙伴积极参与。通过一系列丰富的现场分享、实际操作演示与互动交流,与会者深入理解最新的合规要求与流程、工具与更新版本,并基于实践经验,携手探索进一步优化方向,共同加强 Arm 生态系统的强大实力
    的头像 发表于 11-11 11:39 631次阅读

    麦斯塔MST8011AI-12系列晶振:光模块通信的“同步引擎”

    麦斯塔MST8011AI-12系列晶振作为光模块通信的“同步引擎”,已成为不可或缺的关键元件。它如同一颗精准跳动的“心脏”,为光模块的高速、稳定运行提供稳定的时钟信号,确保数据传输的同步性和准确性
    的头像 发表于 10-21 15:42 290次阅读
    麦斯塔MST8011AI-12<b class='flag-5'>系列</b>晶振:光模块通信的“<b class='flag-5'>同步</b>引擎”

    请问如何为 NuMicro® M451 系列中的 PWM 设置计数器同步

    如何为 NuMicro® M451 系列中的 PWM 设置计数器同步
    发表于 08-29 06:48

    一文了解Arm神经超级采样 (Arm Neural Super Sampling, Arm NSS) 深入探索架构、训练和推理

    本文将从训练、网络架构到后处理和推理等方面,深入探讨 Arm 神经超级采样 (Arm Neural Super Sampling, Arm NSS) 的工作原理,希望为机器学习 (ML) 工程师和移动端图形开发者来详细解释
    的头像 发表于 08-14 16:11 2520次阅读

    ARM Mali GPU 深度解读

    ARM Mali GPU 深度解读 ARM Mali 是 Arm 公司面向移动设备、嵌入式系统和基础设施市场设计的图形处理器(GPU)IP 核,凭借其异构计算架构、能效优化和生态协同,成为全球移动
    的头像 发表于 05-29 10:12 3059次阅读

    Arm 公司面向 PC 市场的 ​Arm Niva​ 深度解读

    面向 PC 市场的 ​ Arm Niva ​ 深度解读 ​ Arm Niva ​ 是 Arm 公司为 PC 市场推出的核心计算平台,属于其“平台优先”战略的关键布局。作为 ​ Arm
    的头像 发表于 05-29 09:56 1320次阅读

    Arm CPU适配通义千问Qwen3系列模型

    近日,阿里巴巴开源了新一代通义千问模型 Qwen3,Arm 率先成为首批成功适配该模型的计算平台厂商。与此同时,Arm 面向人工智能 (AI) 框架开发者的开源计算内核 Arm KleidiAI
    的头像 发表于 05-12 16:37 1110次阅读

    AD463x-24系列是否支持多个芯片同步采集信号?

    想询问AD463x-24系列是否支持多个芯片同步采集信号,我现在有四个电压信号需要同步采集,能否用两片AD4630-24芯片同步采样?如果可以的话,可以描叙一下具体是如何实现的吗。如果
    发表于 04-28 06:09

    Arm助力开发者加速迁移至Arm架构云平台 Arm云迁移资源分享

    随着基于 Arm 架构的云实例日益扩展,越来越多的用户正从传统平台迁移至 Arm 平台上。
    的头像 发表于 04-09 18:23 1034次阅读

    NS2304X系列PFM同步升压变换器中文手册

           NS2304X 系列产品是一款低功耗、高效率、高频率的 PFM 控制同步升压 DC-DC 转换器。       NS2304X外围仅需要三个元器件就可以实现系统升压工作。将较低的输入
    发表于 04-08 14:47 0次下载

    一文认识ARM微控制器及瑞萨RA系列MCU

    俗称单片机,如果有学过微机原理就会很熟悉这个概念了。而ARM微控制器,顾名思义,就是基于ARM的微控制器,或者说搭载了ARM处理器内核的微控制器。
    的头像 发表于 03-24 09:17 2311次阅读
    一文认识<b class='flag-5'>ARM</b>微控制器及瑞萨RA<b class='flag-5'>系列</b>MCU

    ISERDESE2原语端口及参数介绍

    前面在讲解HDMI接口之前,讲解过IDDR、ODDR、OSERDESE2、IBUF等原语,之后一直有读者在问什么时候更新ISERDESE2这个原语。前文讲解过这些原语都在HDMI或者RGMII中使用过,但是ISERDESE2这个
    的头像 发表于 03-17 10:52 2208次阅读
    ISERDESE2<b class='flag-5'>原语</b>端口及参数介绍

    消息称Arm准备提高授权许可费用

    调整授权许可费用。这一举措预计将对三星Exynos芯片的未来发展产生重大影响。 三星曾有自己的定制CPU内核研发团队,但因功耗和性能问题,2019年解散该团队,转而采用Arm的公版设计。 原本三星计划在Galaxy S26系列中“大量使用”改进后的Exynos 2600芯
    的头像 发表于 01-22 15:37 687次阅读

    EE-60:使用ADSP-21xx系列DSP上的同步串行端口仿真RS-232 UART

    电子发烧友网站提供《EE-60:使用ADSP-21xx系列DSP上的同步串行端口仿真RS-232 UART.pdf》资料免费下载
    发表于 01-14 16:07 0次下载
    EE-60:使用ADSP-21xx<b class='flag-5'>系列</b>DSP上的<b class='flag-5'>同步</b>串行端口仿真RS-232 UART

    Arm原生Google Chrome增强Windows on Arm性能

    微软 Windows 10 和 Windows 11 集成了 Arm 原生支持,这保证了为 Windows 开发更多 Arm 原生应用。这种支持提供了额外的工具,以简化应用移植、增强应用性能并降低功耗。因此,很多公司目前正在为 Windows 投资
    的头像 发表于 12-17 10:25 1681次阅读