java吧 关注:1,238,659贴子:12,708,880
  • 8回复贴,共1

问大家一个内存屏障的问题

只看楼主收藏回复

我碰巧看到这样的帖子。是这样介绍的:禁止编译器优化前提下:
x86的每个核心都实现了Sequential consistency,保证指令按程序顺序发射到ROB,并行乱序执行,但最终会被顺序提交,所以无需考虑指令乱序带来的问题。且x86的Store Buffer是FIFO队列设计,且x86不存在失效队列结构,所以对于x86架构的处理器,仅考虑使用写屏障将Store Buffer中数据及时刷新到Cache即可。
而ARM架构的绝大部分处理器没有实现Sequential consistency,除了控制、地址、数据等前后依赖相关的指令不会被重排序之外,其他指令可能会被CPU优化后乱序发射并乱序提交。而且ARM的Store Buffer是非FIFO的,这使得数据刷新到Cache不是按序的。同时几乎ARM架构的处理器都存在Invalidate Queues结构,所以ARM处理器上的程序是需要程序员灵活使用内存屏障的。
为了能够同时解决像x86和ARM等处理器带来的数据问题,Java早先在硬件基础上抽象出四种传统的内存屏障,这些屏障的作用不仅体现在将Store Buffer中的数据刷新到Cache和将Invalidate Queues中的失效消息处理,还会禁止ARM架构的处理器对前后指令进行重排序,最终使得指令按序发射和提交。
想问一下各路大佬,这种理解正确吗?


IP属地:山东来自Android客户端1楼2023-12-19 13:43回复
    1


    IP属地:山东来自Android客户端2楼2023-12-20 13:19
    回复
      1


      IP属地:山东来自Android客户端3楼2023-12-20 16:19
      回复
        嫩牛 哥们都看不懂 帮顶


        IP属地:北京来自Android客户端4楼2023-12-20 16:34
        回复
          我们都是外包仔,你给我说这个


          IP属地:上海来自Android客户端5楼2023-12-20 17:01
          回复
            看不懂


            IP属地:浙江来自iPhone客户端7楼2023-12-20 20:04
            回复
              看看


              IP属地:浙江来自Android客户端8楼2023-12-20 23:30
              回复
                1111111不要沉呀


                IP属地:山东来自Android客户端9楼2023-12-21 01:44
                回复
                  1


                  IP属地:山东来自Android客户端10楼2023-12-21 06:13
                  回复