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

Armv7 Store Buffer

Hi,

Store Buffer holds store operation before it is commited to Cache or Main Memory.

So only if the proper store buffer entry is drained, can we get the right data by a load operation. Am I right?

If yes, is it possible that we read a unexpected value after a write without a drain request(e.g. DMB)?

Thanks&Regards.

Parents
  • if a wrong data will be got before the store buffer entry is drained

    On a single cpu, the sequence of instructions,

    a = 1;
    r = a;

    is expected by the programmer to end with r set to 1, regardless of the presence or absence of store buffer. With the store buffer, an implementation may choose to read from it, or wait until the store is drain and then fetch from beyond the cpu.

    For shared-memory multiprocessors, use of barriers as advised in the manuals help the programmer avoid the need to know about the store buffer.

Reply
  • if a wrong data will be got before the store buffer entry is drained

    On a single cpu, the sequence of instructions,

    a = 1;
    r = a;

    is expected by the programmer to end with r set to 1, regardless of the presence or absence of store buffer. With the store buffer, an implementation may choose to read from it, or wait until the store is drain and then fetch from beyond the cpu.

    For shared-memory multiprocessors, use of barriers as advised in the manuals help the programmer avoid the need to know about the store buffer.

Children