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

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

3天内不再提示

介绍ARM存储一致性模型的相关知识

安芯教育科技 来源:老秦谈芯 作者:老秦谈芯 2023-02-14 09:19 次阅读

前面我们分享了中断及ARM体系中对中断的处理、GIC-600以及redistributor的相关知识,本篇将介绍ARM存储一致性模型的相关知识。

按照惯例,先讲基础原理,再说ARM的相关部分。

今天要说的这个是存储一致性(memory consistency),不要跟前面讲过缓存一致性(cache coherence)混淆了。缓存一致性协议解决的是对单个存储器地址的访问之间如何排序的问题,而对于不同地址的访问并不是缓存一致性协议所要考虑的问题。存储一致性问题在任何具有或不具有高速缓存的系统中都存在,虽然高速缓存的存在有可能进一步加剧存储一致性问题。

存储器模型(memory model)又称为存储一致性模型。用于定义系统中对存储器访问需要遵守的原则,只要软件和硬件都遵循该原则,就能保证多核程序能运行得到确切的结果。 对于程序员来说,通常直觉上会隐式地假定存储器操作是按一定次序的。来看下面的例子,假定有两个线程P0和P1。

3ba4e80a-abc9-11ed-bfe3-dac502259ad0.png

在线程P0中,执行S1,赋值data为5;执行S2,赋值dataIsReady为1。在线程P1中,等待dataIsReady这个变量变为1,然后把data赋值给其它变量。在我们直观看来,S1先于S2执行,通过dataIsReady来阻塞P1的S3执行,那么执行S4的时候,拿到的data一定是5。

实际上,未必是这样,可能S2的结果早于S1传播到P1,S4拿到的data就有可能是旧值,而不是5! 在我们的直观感觉里,对于变量的写操作会即时传播,或者说是原子性的,即P0的写操作必须以不能分割的步骤传播到P1。我们把关于存储器访问次序的隐式期望表示为:来自一个处理器的存储器访问应该以程序的次序执行,并且每个访问的执行必须是原子性的。

这样一种期望被正式定义为顺序一致性(SC)模型。顺序一致性模型虽然能严格的解决存储访问次序问题,但是由于过于严厉,会产生巨大的性能开销。因为当某一个写入操作未执行完,其它的操作可能会全部暂停下来。所以现在大部分处理器都不会实现顺序一致性,而是实现一些较为松弛的一致性模型。

下面将根据从强到弱的限制程度排序,列举几种典型的存储器模型:

1. 顺序一致性模型(sequential consistency,SC)

也称为强定序模型,从施加的限制来看,该模型下load/store是顺序的访问存储器。每个处理器都按照程序顺序来执行程序,即便访问的是不同存储器地址,也不能改变访问顺序。从全局看,每个存储器写操作都需要能被系统中所有的处理器同时观测到,同一时刻只有一个处理器和存储系统相连,因此对memory的访问时原子化的,串行化的。顺序一致性模型简单直观,但限制了CPU硬件和编译器的优化,影响了整个系统的性能。

2. 完全存储定序模型(Total Store Order,TSO)

由于处理器主频和存储器频率相差较大,系统设计人员通常会在CPU中增加存储缓冲区(store buffer),它的作用是为store指令提供缓冲,使得处理器不用等待存储器的响应。但是由于存储缓冲的存在,一些在store之后的load指令可能会越过该指令提前执行,那一个core的store-load操作通常会被其他core看成乱序执行了,变成load-store了。因此在在该模型下,访存操作的四种组合store-store,store-load,load-store,load-load中,只有store-load存在乱序。store操作在store_buffer中顺序执行。load同样按顺序执行,但可穿插到多个store执行过程中

3. 部分存储定序模型(Part Store Order,PSO)

系统设计人员并不满足TSO模型带来的性能提升,于是继续在TSO的基础上放松访问内存访问限制,允许处理器以非FIFO来处理store buffer缓冲区的指令,处理器只保证地址相关指令在store buffer中以FIFO的形式进行处理,而其它的则可以乱序处理。

4. 处理器一致性模型(Processor Consistency,PC)

该模型比顺序一致性弱。在SC中,要维持每一条load/store指令与后续load/store指令的次序。在处理器一致性模型中,则放松了较早的store指令和较晚的load指令之间的次序。当一条store指令还未被执行时,允许一条较晚的load指令像高速缓存发出请求甚至结束。这一点的重要性在于,store指令可以在写缓冲区排队并在稍晚执行,同时,load指令不需要等待较早的store指令结束就可以访问高速缓存,所以降低了load指令的时延。

5. 弱序一致性模型(Weak Order Consistency,WO)

该模型的主要思想是把同步操作和普通访存操作区分开来,两个同步操作之间的访存操作的顺序不受影响,依然遵循指令程序顺序。WO模型利用了两个假设:程序是适当同步的;程序员正确的向硬件表示哪些load和store是起到同步访问作用的。

程序员必须用硬件可识别的同步操作把对可写共享单元的访问保护起来,以保证多个处理器对该共享单元的访问是互斥的。该模型增加了程序员的负担,但能有效提高性能。目前,很多的商业化处理器实现的就是WO,比如ARM。

6. 释放一致性模型(Release Consistency,RC)

该模型是对弱一致性模型的改进,它把同步操作进一步分成获取操作(acquire)和释放操作(release)。acquire用于获取对某些共享存储单元的独占性访问权;release用于释放该访问权。执行的顺序为:acquire-> load/store ->release。

与WO类似,RC允许编译器自由改变load指令和store指令的次序,但是不允许它们越过一个获取同步向前移动,也不允许它们越过一个释放同步向后移动。与WO不同的是,单靠指令的操作码不容易表示同步访问。 通常来说,存储一致性模型对访存事件次序施加的限制越弱,越有利于提高性能,但增加了编程难度。

且限制越强的存储器模型程序可以在限制较弱的存储器模型上运行,很少会导致错误。 关于存储器一致性模型,有很多的学术文章和书籍,我所了解的也就是一点皮毛。其实,今天讲的这些,都是基础知识。

审核编辑:刘清

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

    关注

    68

    文章

    19342

    浏览量

    230228
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9107

    浏览量

    367976
  • 存储器
    +关注

    关注

    38

    文章

    7513

    浏览量

    163987
  • fifo
    +关注

    关注

    3

    文章

    389

    浏览量

    43738
  • 编译器
    +关注

    关注

    1

    文章

    1636

    浏览量

    49172

原文标题:技术分享 | ARM系列 - - 存储模型(一)

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

收藏 人收藏

    评论

    相关推荐

    多种内存一致性模型的特性分析

    这样提高CPU的并发能力。 内存一致性模型(memory consistency model)就是用来描述多线程对共享存储器的访问行为,在不同的内存一致性
    的头像 发表于 09-21 13:57 3123次阅读
    多种内存<b class='flag-5'>一致性</b><b class='flag-5'>模型</b>的特性分析

    ARM系列 - - 存储模型

    的问题,而对于不同地址的访问并不是缓存一致性协议所要考虑的问题。存储一致性问题在任何具有或不具有高速缓存的系统中都存在,虽然高速缓存的存在有可能进步加剧
    发表于 04-11 15:42

    顺序一致性和TSO一致性分别是什么?SC和TSO到底哪个好?

    更为常用,而在TSO内存一致性模型中很少用,因为仅仅store-load的乱序在大多数情况下都是没有问题的。到这里,我们已经介绍了顺序一致性和TSO
    发表于 07-19 14:54

    一致性规划研究

    针对一致性规划的高度求解复杂度,分析主流一致性规划器的求解策略,给出影响一致性规划器性能的主要因素:启发信息的有效,信念状态表示方法的紧凑
    发表于 04-06 08:43 12次下载

    CMP中Cache一致性协议的验证

    CMP是处理器体系结构发展的个重要方向,其中Cache一致性问题的验证是CMP设计中的项重要课题。基于MESI一致性协议,本文建立了CMP的Cache
    发表于 07-20 14:18 38次下载

    TTCN在TD-SCDMA终端RRM一致性测试系统中的应用

    TD-SCDMA终端一致性测试的个重要内容就是进行RRM一致性测试,这对终端研发和认证有着重要的意义。本文首先介绍了TTCN(树表结合表示法)一致
    发表于 09-15 17:12 24次下载

    加速器一致性接口

    提供异步缓存一致性直接访问PS的入口。处理器可以标记ACP上的传输为一致性或非一致性。PL端的AXI主机通过ARUSERS[1:0]指示是否为一致性读传输,通过AWUSERS[1:0]
    发表于 11-17 15:04 3697次阅读

    Cache一致性协议优化研究

    现代晶体管技术在单芯片上集成多个处理器已经成为现实.近年来,随着多核处理器集成核数的不断增加,高速缓存的一致性问题凸显出来,已成为多核处理器的性能瓶颈之,亟待解决.介绍了片上多核处理器一致性
    发表于 12-30 15:04 0次下载
    Cache<b class='flag-5'>一致性</b>协议优化研究

    优化模型的乘偏好关系一致性改进

    针对乘偏好信息下的决策问题,引入乘偏好关系的有序一致性、满意一致性以及一致性指数等概念,建立以偏差变量最小化为目标函数的优化
    发表于 03-20 17:28 0次下载

    自主驾驶系统将使用缓存一致性互连IP和非一致性互连IP

    的创新片上网络(NoC)互连知识产权(IP)产品的全球领先供应商,宣布,MobileEye已购买Arteris IP 的NCore缓存一致性互连产品、flexNOC互连产品以及NCore和flexNOC Resilience软
    的头像 发表于 05-09 17:13 3237次阅读

    介绍下cpu缓存一致性(MESI协议)

    之前介绍了java并发包的cas原理和java内存模型,这篇我们介绍下cpu缓存一致性原理,可以帮助我们更好的理解cas的底层原理。
    的头像 发表于 06-09 16:01 4699次阅读
    <b class='flag-5'>介绍</b>下cpu缓存<b class='flag-5'>一致性</b>(MESI协议)

    如何保证缓存一致性

    “ 本文的参考文章是2022年HOT 34上Intel Rob Blakenship关于CXL缓存一致性介绍。”
    的头像 发表于 10-19 17:42 1149次阅读
    如何保证缓存<b class='flag-5'>一致性</b>

    分布式系统中常见的一致性模型

    什么是一致性模型? 在分布式系统中,C(一致性) 和 A(可用)始终存在矛盾。若想保证可用,就必须通过复制、分片等方式冗余
    的头像 发表于 11-10 11:33 951次阅读
    分布式系统中常见的<b class='flag-5'>一致性</b><b class='flag-5'>模型</b>

    DDR一致性测试的操作步骤

    介绍DDR一致性的操作步骤。 1. 准备测试环境:首先,需要准备好测试环境。这包括台DDR一致性测试设备,该设备通常是专门为DDR测试设计的高性能工具。还需要
    的头像 发表于 02-01 16:24 1582次阅读

    深入理解数据备份的关键原则:应用一致性与崩溃一致性的区别

    深入理解数据备份的关键原则:应用一致性与崩溃一致性的区别 在数字化时代,数据备份成为了企业信息安全的核心环节。但在备份过程中,两个关键概念——应用一致性和崩溃一致性,常常被误解或混淆。
    的头像 发表于 03-11 11:29 956次阅读
    深入理解数据备份的关键原则:应用<b class='flag-5'>一致性</b>与崩溃<b class='flag-5'>一致性</b>的区别