This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Atomicity in the ARM architecture

各位专家:

     请教一下在ARMv8包括ARMv7-A架构中,Single-copy atomicity和multicopy atomicity具体指的什么?有什么作用,如何理解?谢谢!

Parents
  • single-copy atomic定义了一条load/store指令(或者说由这条指令产生的transaction)update memory时的最小单位。

    假设我们有以下两条指令。

    STM[addr]

    LDM[addr]

    假设STM写8个word(32bytes)到addr,LDM从相同地址读8个word,返回的结果即使某一个(或者某几个)byte和STM写的值一致,也不能保证所有的byte都是最新的。因为STM,LDM不满足single-copy atomic。

    如果指令是STR和LDR,而且满足single-copy atomicity (也就是说地址是word对齐),他们update memory的最小单位就是 word。所以如果LDR读到一个word中的某一个(或者某几个)byte是最新值,那么LDR读到的整个word必须是最新值。

    在设计CPU时,desinger根据ARMARM来决定哪些指令实现的操作必须满足single copy atomic。如果满足single-copy atomicity,可以保证每次我们看到的值或者全部是旧的,或者全部是新的,不可能存在一部分新的一部分旧的。

    对于multi-copy atomic, 如果一个系统满足multi-copy atomic,它保证当系统中的某个master能够看到某个data的update时,系统中所有的master都能够看到这个update。所有的master能不能有相同的memory view对于保证coherency很重要。ARM A系列CPU大部分都是不满足这个要求,所以需要使用memory barrier来保证这一点。如果系统满足multi-copy atomic,可以选择把barrier terminate在cluster里面。如果系统不满足multi-copy atomic,那么就需要把barrier broadcast出去。

Reply
  • single-copy atomic定义了一条load/store指令(或者说由这条指令产生的transaction)update memory时的最小单位。

    假设我们有以下两条指令。

    STM[addr]

    LDM[addr]

    假设STM写8个word(32bytes)到addr,LDM从相同地址读8个word,返回的结果即使某一个(或者某几个)byte和STM写的值一致,也不能保证所有的byte都是最新的。因为STM,LDM不满足single-copy atomic。

    如果指令是STR和LDR,而且满足single-copy atomicity (也就是说地址是word对齐),他们update memory的最小单位就是 word。所以如果LDR读到一个word中的某一个(或者某几个)byte是最新值,那么LDR读到的整个word必须是最新值。

    在设计CPU时,desinger根据ARMARM来决定哪些指令实现的操作必须满足single copy atomic。如果满足single-copy atomicity,可以保证每次我们看到的值或者全部是旧的,或者全部是新的,不可能存在一部分新的一部分旧的。

    对于multi-copy atomic, 如果一个系统满足multi-copy atomic,它保证当系统中的某个master能够看到某个data的update时,系统中所有的master都能够看到这个update。所有的master能不能有相同的memory view对于保证coherency很重要。ARM A系列CPU大部分都是不满足这个要求,所以需要使用memory barrier来保证这一点。如果系统满足multi-copy atomic,可以选择把barrier terminate在cluster里面。如果系统不满足multi-copy atomic,那么就需要把barrier broadcast出去。

Children
No data