Question

Je patauge actuellement le manuel de l'architecture de bras pour le noyau ARMV7. Au chapitre A3.5.3 sur l'atomicité des accès à la mémoire, il indique:

Si une charge atomique à une copie unique chevauche un magasin atomique à copie et Pour l'un quelconque des octets de chevauchement, la charge renvoie les données écrites par l'écriture insérée dans l'ordre de cohérence de cet octet par le Store atomique à une copie unique que la charge doit renvoyer des données d'un point Dans la commande de cohérence, pas plus tôt que les écritures insérées dans le Ordre de cohérence par le magasin atomique à une copie unique de tous les se chevauchant des octets.

En tant que conférencier anglais non indigène, j'avoue que je suis légèrement contesté pour comprendre cette phrase.

Y a-t-il un scénario où les écrit à un octet de mémoire ne sont pas insérés dans l'ordre de cohérence et donc ce qui précède ne s'applique pas? Sinon, ai-je raison de dire que cela raccourcir et reformuler la phrase à ce qui suit:

Si la charge arrive à renvoyer au moins un octet de la l'écriture, puis la charge doit renvoyer tous les octets qui se chevauchent d'un point non plus tôt que d'où l'écriture les a insérés dans la Ordre de cohérence de tous les octets qui se chevauchent.

Transporte toujours le même sens?

Était-ce utile?

La solution

Je vois que le libellé dans le bras armv8, qui essaie vraiment de supprimer toute ambiguïté éventuelle dans de nombreux endroits (même s'il fait la section de commande de mémoire pratiquement illisible).

En termes de compréhension générale (par opposition à la mise en œuvre de la spécification), un peu d'ambiguïté ne fait pas toujours mal, alors alors qu'il ne parvient pas à le faire absolument Effacer ce que signifie un "emplacement de mémoire", je pense que l'ancien manuel V7 (DDI0406C.B) est une lecture plus agréable dans ce cas:

Une opération de lecture ou d'écriture est atomique de copie unique si les conditions suivantes sont à la fois vraies:

  • Après un nombre d'opérations d'écriture à un emplacement de mémoire, la valeur de l'emplacement de la mémoire est la valeur écrite par l'une des opérations d'écriture. Il est impossible que la valeur de la valeur de l'emplacement de la mémoire provienne d'une opération d'écriture et une autre partie de la valeur à provenir d'une opération d'écriture différente

  • Lorsqu'une opération de lecture et une opération d'écriture sont effectuées sur la même position de mémoire, la valeur obtenue par l'opération de lecture est l'une des:

    • la valeur de l'emplacement de la mémoire avant l'opération d'écriture
    • la valeur de l'emplacement de la mémoire après l'opération d'écriture.

    Il n'est jamais le cas que la valeur de l'opération de lecture est en partie la valeur de l'emplacement de la mémoire avant l'opération d'écriture et partiellement la valeur de l'emplacement de la mémoire après l'opération d'écriture.

Votre compréhension est donc correcte - le point de définition d'une opération atomique à une copie unique est qu'à tout moment, vous ne pouvez jamais voir tous de celui-ci, ou aucun de celui-ci.

Il y a un cas dans la V7 par laquelle (si je l'interpréte à droite) deux magasins atomiques à une copie unique qui se produisent au même endroit au même endroit, mais avec des tailles différentes, une garantie d'atomicité, donc en théorie que vous pourrait observer un mélange inattendu d'octets là-bas - cela semble avoir été supprimé en V8.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top