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
    +关注

    关注

    134

    文章

    9034

    浏览量

    366597
  • 寄存器
    +关注

    关注

    31

    文章

    5304

    浏览量

    119897
  • 变量
    +关注

    关注

    0

    文章

    613

    浏览量

    28314

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

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

收藏 人收藏

    评论

    相关推荐

    ZS7608X系列60V同步整流控制器使用规格书

    ZS7608X系列是一款内置MOS的同步整流芯片。适用于隔离型的同步整流应用。该系列产品采用原边开通判定和副边断续判定技术。可以有效的避免因激磁振荡引起的驱动芯片误动作。采用特有的VC
    发表于 09-07 10:33 0次下载

    ZS7607X系列60V同步整流控制器使用规格书

    ZS7607X系列是一款内置MOS的同步整流芯片。适用于隔离型的同步整流应用。该系列产品采用原边开通判定和副边断续判定技术。可以有效的避免因激磁振荡引起的驱动芯片误动作。采用特有的VC
    发表于 09-07 10:31 0次下载

    ZS7703X系列45V同步整流控制器使用规格书

    ZS7703X系列是一款内置MOS的同步整流芯片。适用于隔离型的同步整流应用。该系列产品采用原边开通判定和副边断续判定技术。可以有效的避免因激磁振荡引起的驱动芯片误动作。采用特有的VC
    发表于 09-07 10:29 0次下载

    钡铼工业级 ARM 边缘计算控制器BL330 系列

      一、 产品概述  ARMxy 系列ARM 嵌入式计算机 BL330 系列是一款可灵活配置 IO 口的工业级 ARM 控制器,基于全志科技 T113-i 双核
    的头像 发表于 07-11 10:44 411次阅读
    钡铼工业级 <b class='flag-5'>ARM</b> 边缘计算控制器BL330 <b class='flag-5'>系列</b>

    xilinx中的carry4原语在高云FPGA中用什么原语替代?

    xilinx中的carry4原语在高云FPGA中用什么原语替代
    发表于 05-09 16:13

    ArmArm Neoverse计算子系统(CSS):Arm Neoverse CSS V3和Arm Neoverse CSS N3

    和Neoverse CSS N3代表了Arm计算子系统产品组合的最新进展。 Neoverse CSS V3是高性能V系列产品组合的首款产品,相比其前身Neoverse CSS N2,每插槽性能提高了50%。这种增强对于需要高计算吞吐量的应用程
    的头像 发表于 04-24 17:53 974次阅读
    <b class='flag-5'>Arm</b>新<b class='flag-5'>Arm</b> Neoverse计算子系统(CSS):<b class='flag-5'>Arm</b> Neoverse CSS V3和<b class='flag-5'>Arm</b> Neoverse CSS N3

    同步多台示波器的应用指南

    本应用指南以泰克4,5和6系列MSO为例,说明了多示波器同步的程序和原理。4,5和6系列MSO支持任意型号示波器之间的同步,从而实现更多通道的同步
    发表于 03-08 12:41 744次阅读
    <b class='flag-5'>同步</b>多台示波器的应用指南

    ARM系列STM32F103芯片的解密方法

    本文介绍ARM系列STM32F103芯片的解密方法,其内核是Cortex-M3,内存从16K-512K都有。
    发表于 02-28 11:20 1539次阅读

    Arm 更新 Neoverse 产品路线图,实现基于 Arm 平台的人工智能基础设施

    新闻重点: Arm 宣布推出两款基于全新第三代 Neoverse IP 构建的新的 Arm Neoverse 计算子系统 Arm Neoverse CSS V3 是高性能 V 系列产品
    发表于 02-22 11:41 342次阅读

    GD32H757xx系列Arm Cortex-M7 MCU数据手册

    电子发烧友网站提供《GD32H757xx系列Arm Cortex-M7 MCU数据手册.pdf》资料免费下载
    发表于 01-03 10:47 1次下载
    GD32H757xx<b class='flag-5'>系列</b><b class='flag-5'>Arm</b> Cortex-M7 MCU数据手册

    GD32H759xx系列Arm Cortex-M7 MCU数据手册

    电子发烧友网站提供《GD32H759xx系列Arm Cortex-M7 MCU数据手册.pdf》资料免费下载
    发表于 01-03 10:45 6次下载
    GD32H759xx<b class='flag-5'>系列</b><b class='flag-5'>Arm</b> Cortex-M7 MCU数据手册

    GD32H737xx系列Arm Cortex-M7 MCU数据手册

    电子发烧友网站提供《GD32H737xx系列Arm Cortex-M7 MCU数据手册.pdf》资料免费下载
    发表于 01-03 10:42 4次下载
    GD32H737xx<b class='flag-5'>系列</b><b class='flag-5'>Arm</b> Cortex-M7 MCU数据手册

    如何用RTL原语实现MUX门级映射呢?

    对于前端设计人员,经常会需要一个MUX来对工作模式,数据路径进行明确(explicit)的声明,这个对于中后端工程师下约束也很重要。这里介绍一种巧用的RTL原语,实现MUX的方法。
    的头像 发表于 12-14 16:26 1317次阅读
    如何用RTL<b class='flag-5'>原语</b>实现MUX门级映射呢?

    GD32W515系列 32位ARM® Cortex® -M33 MCU选择指南

    电子发烧友网站提供《GD32W515系列 32位ARM® Cortex® -M33 MCU选择指南.pdf》资料免费下载
    发表于 12-14 10:07 0次下载
    GD32W515<b class='flag-5'>系列</b> 32位<b class='flag-5'>ARM</b>®  Cortex® -M33 MCU选择指南

    Arm微架构分析系列Arm的X计划

    前文介绍了Arm公司近几年在移动处理器市场推出的Cortex-A系列处理器。Cortex-A系列处理器每年迭代,性能和能效不断提升,是一款非常成功的产品。
    的头像 发表于 11-28 17:02 1397次阅读
    <b class='flag-5'>Arm</b>微架构分析<b class='flag-5'>系列</b>—<b class='flag-5'>Arm</b>的X计划