Pregunta

Actualmente estoy empañando el manual de arquitectura del brazo para el núcleo ARMV7. En el Capítulo A3.5.3 sobre la atomicidad de los accesos de memoria, establece:

Si una carga atómica de una sola copia se superpone a una tienda atómica de una sola copia y Para cualquiera de los bytes superpuestos, la carga devuelve los datos escritos por la escritura insertada en el orden de coherencia de ese byte por el Tienda atómica de una sola copia, la carga debe devolver los datos de un punto en la orden de coherencia no antes de las escrituras insertadas en el Orden de coherencia por la tienda atómica de una sola copia de todos los bytes superpuestos.

Como hablante de inglés no nativo, admito que soy un poco desafiado a comprender esta frase.

¿Hay un escenario donde las escrituras en un byte de memoria no se inserten en la orden de coherencia y, por lo tanto, lo anterior no se aplica? Si no, soy correcto decir que acortando y reformulando la oración a lo siguiente:

Si la carga vuelve a devolver al menos un byte de la la escritura, entonces la carga debe devolver todos los bytes superpuestos desde un punto no antes de donde los escritos los insertaron en el Orden de coherencia de todos los bytes superpuestos.

¿Todavía transporta el mismo significado?

¿Fue útil?

Solución

Veo que la redacción en el brazo ARMV8, que realmente trata de eliminar cualquier posible ambigüedad en muchos lugares (incluso si hace que la sección de pedido de memoria sea prácticamente ilegible).

En términos de entendimiento general (en lugar de en realidad, en realidad, implementar la especificación), un poco de ambigüedad no siempre hace daño, por lo que mientras no lo hace absolutamente Clean lo que significa una "ubicación de memoria", creo que el antiguo manual V7 (DDI0406C.B) es una lectura más bonita en este caso:

Una operación de lectura o escritura es Atómica de una sola copia Si las siguientes condiciones son verdaderas:

  • Después de cualquier número de operaciones de escritura en una ubicación de memoria, el valor de la ubicación de la memoria es el valor escrito por una de las operaciones de escritura. Es imposible que parte del valor de la ubicación de la memoria provenga de una operación de escritura y otra parte del valor para provenir de una operación de escritura diferente

  • Cuando se realiza una operación de lectura y una operación de escritura en la misma ubicación de memoria, el valor obtenido por la operación de lectura es uno de:

    • El valor de la ubicación de la memoria antes de la operación de escritura
    • el valor de la ubicación de la memoria después de la operación de escritura.

    Nunca es el caso de que el valor de la operación de lectura sea parcialmente el valor de la ubicación de la memoria antes de la operación de escritura y en parte el valor de la ubicación de la memoria después de la operación de escritura.

Por lo tanto, su comprensión es correcta: el punto de definición de una operación atómica de una sola copia es que, en un momento dado, solo puede ver, ya sea todos de ella, o ninguno > de eso.

Hay un caso en V7 por lo que (si lo estoy interpretando bien) Dos tiendas atómicas normalmente de copia única que se producen al mismo lugar al mismo tiempo, pero con diferentes tamaños rompen cualquier garantía de atomicidad, así que en teoría. podría observar una mezcla inesperada de bytes allí, este aspecto se ha eliminado en V8.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top