【问题标题】:The meaning of the acquire release fence abstract instruction realization of different platform不同平台获取释放栅栏抽象指令实现的意义
【发布时间】:2014-10-11 08:29:49
【问题描述】:

见以下代码:

//               sparc RMO             ia64             x86
// ---------------------------------------------------------------------
// fence         membar #LoadStore |   mf               lock addl 0,(sp)
//                      #StoreStore |
//                      #LoadLoad |
//                      #StoreLoad
//
// release       membar #LoadStore |   st.rel [sp]=r0   movl $0,<dummy>
//                      #StoreStore
//               st %g0,[]
//
// acquire       ld [%sp],%g0          ld.acq <r>=[sp]  movl (sp),<r>
//               membar #LoadLoad |
//                      #LoadStore
//
// release_store membar #LoadStore |   st.rel           <store>
//                      #StoreStore
//               st
//
// store_fence   st                    st               lock xchg
//               fence                 mf
//
// load_acquire  ld                    ld.acq           <load>
//               membar #LoadLoad |
//                      #LoadStore

上面的代码是acquire/release/fence抽象指令在不同平台上的实现,我只是想知道x86的实现。

你能为我解释一下下面的说明吗?

How 'movl $0,<dummy>' represent release?
How 'movl (sp),<r>' represent acquire?
How '<store>' represent release_store?
How 'lock xchg' represent store_fence?
How '<load>' represent load_acquire?

代码来自 jdk8/openjdk/hotspot/src/share/vm/runtime/OrderAddress.hpp '内存访问排序模型'

如果你很忙,你可以告诉我在哪里可以找到不同CPU架构的指令集信息。

【问题讨论】:

    标签: java c++ jvm instruction-set


    【解决方案1】:

    x86 具有“强内存模型”,这意味着每条机器指令都隐含地带有获取和释放语义。你可以进一步阅读this,以及this question的答案。

    【讨论】:

    • 非常感谢@Anton Savin,请问能否提供一些关于不同架构指令集的学习资料?我只是想要一些整洁的文件。
    猜你喜欢
    • 2020-01-23
    • 2011-09-25
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多