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

网站建设 小程序开发 营销推广/优化推广关键词

网站建设 小程序开发 营销推广,优化推广关键词,网站建设相关技术方案,铁岭做网站的公司文章目录 概述LL/SC机制独占内存访问指令多字节独占内存访问指令 独占监视器经典自旋锁实现 LSE机制原子内存操作指令CAS指令交换指令 相关参考 概述 在编程中,当多个处理器或线程访问共享数据,并且至少有一个正在写入时,操作必须是原子的&a…

文章目录

    • 概述
    • LL/SC机制
      • 独占内存访问指令
        • 多字节独占内存访问指令
      • 独占监视器
      • 经典自旋锁实现
    • LSE机制
      • 原子内存操作指令
      • CAS指令
      • 交换指令
    • 相关参考

概述

在编程中,当多个处理器或线程访问共享数据,并且至少有一个正在写入时,操作必须是原子的,这意味着数据访问必须被视为相对于其他处理器的单个操作,以避免数据竞争条件。

原子操作的实现依赖处理器硬件提供支持,在不同的处理器体系结构上,原子操作会有不同的实现,例如在x86体系结构下,通常使用锁缓存/总线的方式实现原子操作。目前在ARMv8体系结构下支持两种方式来实现原子操作:

  • 一种是经典的独占内存访问机制,也叫做LL/SC(Load-Link/Store-Conditional),早期ARM体系结构下的原子操作都是基于这种方式实现;
  • 另一种是ARMv8.1体系结构上新增的LSE(Large System Extension)扩展,LSE提供了多种原子内存访问操作指令。

LL/SC机制

LL/SC机制使用多个指令,并且每个处理器都需要实现一个专有监视器,LL/SC机制利用独占内存访问指令和独占监视器共同实现原子操作。首先看下ARMv8体系结构提供的独占内存访问指令。

独占内存访问指令

ARMv8体系结构实现的独占内存访问指令为LDXR/STXR:

  • LDXR:内存独占加载指令,它从内存中以独占方式加载内存地址的值到寄存器中;
  • STXR:内存独占存储指令,它以独占的方式把数据存储到内存中。

LDXR/STXR的指令格式如下:

ldxr    <xt>, [xn | sp] 
stxr    <ws>, <xt>, [xn | sp]
多字节独占内存访问指令

LDXP和STXP指令是多字节独占内存访问指令,一条指令可以独占地加载和存储16字节。

ldxp    <xt1>, <xt2>, [xn | sp]
stxp    <ws>, <xt1>, <xt2>, [<xn | sp>]

独占监视器

独占监视器是一个硬件状态机,用于跟踪读-修改-写序列,并支持Load和Store操作。当CPU执行LDXR指令时,独占监视器会把对应内存地址标记为独占访问模式,保证以独占的方式来访问这个内存地址;而STXR是有条件的存储指令,当CPU执行STRX指令将新数据写入到LDXR指令标记的独占访问内存地址时,会根据独占监视器的状态来进行处理:

  • 若独占监视器为独占访问状态,那么STRX指令执行成功,并且独占监视器会切换状态到开放访问状态;
  • 若独占监视器为开放访问状态,则STRX指令执行失败,数据无法存储。

ARMv8体系提供了三类独占监视器:

  • 本地独占监视器
  • 内部缓存一致性全局独占监视器
  • 外部全局独占监视器

这些独占监视器分别位于系统存储结构的不同层次,如下
在这里插入图片描述

经典自旋锁实现

如下是一个经典的基于独占访问机制的自旋锁实现:
在这里插入图片描述

LSE机制

LL/SC操作本质上是多个CPU核竞争某个内存变量的独占访问,当系统处理器的数量很少时,这可以正常工作;当增加处理器的数量时,处理器之间的竞争冲突会加剧,这会严重影响系统系统;再加上Cache的影响,先前访问到内存变量的处理器会更容易再次获得变量的访问权,这使得多核间访问变量的公平性也难以保证。

Armv8.1-A架构引入了新的原子操作指令,即LSE,LSE机制用于替代原来的LL/SC机制。LSE提升了多处理器系统中原子操作的性能,使用LSE,可以在单个指令中提供不可中断的读-修改-写序列。原子指令可以在指定的内存位置上执行简单的算术或逻辑操作,并将更新的值返回给处理器。LSE新增了三类指令:

  • 原子内存操作指令,包含LD<op>和ST<op>,其中<op>可以是ADD、CLR、EOR、SET、SMAX、SMIN、UMAX和UMIN;
  • 比较并交换指令,包括CAS和CASP
  • 交换指令,SWP

原子内存操作指令

原子内存操作指令分成两类:原子加载指令和原子存储指令。原子内存访问指令的格式如下:

ld<op>  <xs>, <xt>, [<xn|sp>]
st<op>  <xs>, [<xn|sp>]

支持的原子操作后缀:
在这里插入图片描述

CAS指令

CAS指令的格式如下

cas <Ws>, <Wt>, [<Xn|SP>{,#0}]
cas <Xs>, <Xt>, [<Xn|SP>{,#0}]casp <Ws>, <W(s+1)>, <Wt>, <W(t+1)>, [<Xn|SP>{,#0}]
casp <Xs>, <X(s+1)>, <Xt>, <X(t+1)>, [<Xn|SP>{,#0}]

交换指令

交换指令的指令格式如下:

swp <Ws>, <Wt>, [<Xn|SP>]
swp <Xs>, <Xt>, [<Xn|SP>]

相关参考

  • 《ARM64体系结构编程与实践》
  • 《奔跑吧,Linux内核》
  • ARMv8.1平台下新添加原子操作指令
  • Introduction to Large System Extensions
http://www.jmfq.cn/news/5356783.html

相关文章:

  • 广州百度网站建设公司/一站式自媒体服务平台
  • 怎么网站建设怎么样/有没有免费的广告平台
  • 门户网站团队建设/360站长工具
  • 小型企业网站建设内容/最新域名8xgmvxyz
  • 平江网站建设/软文代发布
  • 网站建设板块/最近一周的新闻
  • 政府网站建设先进个人先进事迹/360竞价推广开户多少钱
  • 江苏省建设网站/客源引流推广
  • 建筑工程网站建设/海洋seo
  • 文山城乡建设部网站首页/百度账号官网
  • 网站建设的调查问卷/在线制作网页网站
  • 长春平面网站建设/怎么推广公司网站
  • 网站建网站建设和优/seo+网站排名
  • 网站建设三网合一/app开发平台开发
  • 护肤品网站建设的摘要/新网
  • 哈尔滨 房产网站建设/网络营销技巧
  • 动态网站建设案例教程电子书下载/百度指数查询app
  • 山东省建设官方网站/万能软文范例800字
  • o2o网站建设新闻/企业宣传册模板
  • 亭湖区建设局网站/推广普通话的意义
  • 推动门户网站建设不断优化升级/百度竞价关键词质量度怎么提升
  • 游戏网站建设收费明细/seo在线优化
  • 房山区住房和城乡建设委员会网站/郑州网络营销公司
  • 免费网站建设哪个好/googleplay官方下载
  • 网页设计与网站建设在线考试答案/百度云电脑版网站入口
  • 景洪网站建设/网站运营主要做什么
  • 广西建设工程质量监督网站/成都私人网站建设
  • 博海博海网站建设/深圳纯手工seo
  • 浙江省长兴县建设局网站/建站abc
  • 蛇口网站建设公司/广州网站seo