Maison > développement back-end > C++ > Les processeurs x86 modernes ne peuvent-ils vraiment pas stocker des octets uniques en mémoire ?

Les processeurs x86 modernes ne peuvent-ils vraiment pas stocker des octets uniques en mémoire ?

Susan Sarandon
Libérer: 2024-12-25 15:43:10
original
881 Les gens l'ont consulté

Can Modern x86 CPUs Really Not Store Single Bytes to Memory?

Le matériel x86 moderne ne peut-il pas stocker un seul octet en mémoire ?

La question :

Selon la description de Bjarne Stroustrup du modèle de mémoire C, le matériel moderne ne peut pas effectuer d'opérations de chargement ou de stockage impliquant des données plus petites qu'un mot. Cependant, les tests de l'auteur avec les processeurs x86 démontrent qu'ils peuvent effectivement stocker des objets codés sur un seul octet.

La réponse :

Architectures de jeu d'instructions (ISA) modernes, y compris x86 , fournissez des instructions pour effectuer des magasins de taille en octets. Ces instructions sont atomiques et n'affectent pas les octets voisins.

En interne, certains processeurs non x86 peuvent implémenter des magasins d'octets à l'aide d'un cycle RMW, modifiant ainsi un mot entier dans la ligne de cache. Cependant, cela n'est pas exposé au programmeur et n'affecte pas l'exactitude des magasins externes.

Déclaration de Stroustrup

La déclaration de Stroustrup selon laquelle le matériel moderne ne peut pas traiter des données plus petites qu'un mot est une généralisation inexacte. Les processeurs modernes peuvent en effet charger et stocker les octets de manière efficace.

RMW interne vs visibilité externe

Certains processeurs hautes performances peuvent utiliser un cycle RMW pour implémenter des magasins d'octets dans leurs caches. Il s’agit cependant d’un détail de mise en œuvre interne qui n’a pas d’impact sur le comportement visible des magasins de l’extérieur. Les magasins d'octets sont toujours atomiques et ne perturbent pas les octets voisins.

Modèles de mémoire et conception ISA

Le modèle de mémoire C garantit que les threads peuvent accéder et mettre à jour en toute sécurité des emplacements de mémoire séparés sans interférence. La mise en œuvre de cette garantie est laissée à la combinaison du compilateur et du matériel.

Les processeurs et contrôleurs de mémoire modernes disposent de mécanismes pour garantir que les magasins d'octets se comportent de manière atomique et correcte. Ils utilisent des techniques telles que des protocoles de cohérence de cache et des signaux de contrôleur de mémoire dédiés pour gérer les transferts de taille en octets.

Considérations relatives aux performances

Bien que les processeurs modernes puissent gérer efficacement les magasins d'octets, il est important de noter que certains des architectures ou des scénarios spécifiques peuvent entraîner des pénalités de performances. Par exemple, les magasins d'octets non alignés ou les écritures liées aux E/S peuvent entraîner une surcharge supplémentaire.

Conclusion

L'affirmation selon laquelle le matériel moderne ne peut pas effectuer de magasins de la taille d'un octet est inexacte. Les processeurs grand public et les ISA fournissent cette fonctionnalité depuis des décennies, garantissant que les opérations liées aux octets sont exécutées de manière efficace et sûre. Le modèle de mémoire C s'appuie sur ces capacités architecturales pour garantir l'exactitude et permettre des logiciels hautes performances.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal