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

    文章

    9588

    浏览量

    393626
  • 寄存器
    +关注

    关注

    31

    文章

    5619

    浏览量

    130410
  • 变量
    +关注

    关注

    0

    文章

    616

    浏览量

    29568

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    AT91SAM SAM3N系列ARM闪存MCU技术解析

    AT91SAM SAM3N系列ARM闪存MCU技术解析 在当今的电子设计领域,微控制器(MCU)扮演着至关重要的角色。Atmel的SAM3N系列ARM闪存MCU凭借其高性能、低功耗和丰
    的头像 发表于 04-16 17:00 362次阅读

    深入剖析NCP3020系列同步降压控制器的卓越之选

    深入剖析NCP3020系列同步降压控制器的卓越之选 在电源管理领域,同步降压控制器是实现高效电压转换的关键组件。今天,我们将深入探讨安森美半导体(ON Semiconductor
    的头像 发表于 04-11 15:40 431次阅读

    深入解析Atmel SAM3S系列ARM Cortex - M3微控制器

    深入解析Atmel SAM3S系列ARM Cortex - M3微控制器 在当今电子技术飞速发展的时代,微控制器作为电子设备的核心大脑,其性能和功能直接影响着产品的质量和竞争力。Atmel
    的头像 发表于 04-06 14:20 738次阅读

    深度解析Atmel SAM7S系列ARM微控制器:从特性到应用

    深度解析Atmel SAM7S系列ARM微控制器:从特性到应用 在嵌入式系统设计领域,微控制器是核心组成部分,而Atmel的SAM7S系列ARM微控制器凭借其高性能、低功耗和丰富的外设
    的头像 发表于 04-06 11:05 740次阅读

    Atmel SAM7S系列ARM微控制器深度解析

    Atmel SAM7S系列ARM微控制器深度解析 一、引言 在嵌入式系统的设计领域,微控制器的选择至关重要。Atmel的SAM7S系列ARM微控制器凭借其高性能、低功耗以及丰富的外设功
    的头像 发表于 04-06 11:05 288次阅读

    详解Arm AGI CPU 1OU双节点参考服务器

    近日发布的Arm AGI CPU 是 Arm 首款面向人工智能 (AI) 数据中心的量产级芯片产品。与此同时,Arm同步推出一款模块化、基于标准的 1OU 双节点参考服务器,将基于
    的头像 发表于 04-01 15:09 495次阅读

    深入解析AT91SAM SAM3N系列ARM Flash MCU

    深入解析AT91SAM SAM3N系列ARM Flash MCU 在当今的电子设计领域,微控制器(MCU)扮演着至关重要的角色。Atmel的SAM3N系列ARM Flash MCU以其
    的头像 发表于 03-31 17:05 350次阅读

    LTC1149系列同步降压开关稳压器设计全解析

    LTC1149系列同步降压开关稳压器设计全解析 在电子设计领域,电源管理是至关重要的一环。LTC1149系列同步降压开关稳压器以其高效、高性能的特点,在众多应用场景中备受青睐。今天,我
    的头像 发表于 03-31 13:45 408次阅读

    Xilinx FPGA输入延迟原语介绍

    在高速接口设计中,时序收敛往往是工程师面临的最大“噩梦”。当数据传输速率突破 800Mbps 时,微小的 PCB 走线差异都足以让系统崩溃。本文将深度剖析 Xilinx 7 系列(IDELAYE2)与 UltraScale 系列(IDELAYE3)的底层原理,带你彻底攻克
    的头像 发表于 03-11 09:29 1733次阅读
    Xilinx FPGA输入延迟<b class='flag-5'>原语</b>介绍

    德州仪器TPSM86325x系列同步降压模块:设计与应用全解析

    德州仪器TPSM86325x系列同步降压模块:设计与应用全解析 在电子工程师的日常工作中,电源模块的选择和设计至关重要。今天,我们就来深入探讨一下德州仪器(TI)推出的TPSM86325x系列
    的头像 发表于 03-03 11:05 249次阅读

    德州仪器TPSM86125x系列同步降压模块:高效电源解决方案

    德州仪器TPSM86125x系列同步降压模块:高效电源解决方案 在电子设计领域,电源模块的性能和可靠性至关重要。德州仪器(TI)的TPSM86125x系列同步降压模块,以其出色的特性和
    的头像 发表于 03-03 09:45 184次阅读

    RDMA设计46:RoCE v2原语功能:单边语义

    本博文主要交流设计思路,在本博客已给出相关博文约170篇,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP设计。 续上,为便于查看,给出表1部分表1 RoCE v2原语功能
    发表于 03-01 23:14

    RDMA设计45:RoCE v2 原语功能验证与分析2

    本博文主要交流设计思路,在本博客已给出相关博文约170篇,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP设计。续上,为便于查看,给出表1部分 表1 RoCE v2原语功能
    发表于 02-26 07:52

    西门子EDA与Arm携手合作加速系统设计验证进程与软件启动

    对芯片设计而言,加速产品的上市流程至关重要。为此,西门子EDA与Arm携手合作,为Arm的合作伙伴提供了一系列基于Arm Neoverse CSS与
    的头像 发表于 12-19 09:06 871次阅读
    西门子EDA与<b class='flag-5'>Arm</b>携手合作加速系统设计验证进程与软件启动

    ARM Mali GPU 深度解读

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