Qu'est-ce qu'un faux partage?
Le faux partage est une situation qui peut se produire dans un programme informatique lorsque deux applications en cours d'exécution simultanément tentent d'accéder à des informations dans la même région de mémoire logique que chaque programme ou processus a stockées dans son propre cache. Les données contenues dans le cache de chaque application sont copiées à partir d'une source commune. Par conséquent, si vous modifiez un cache, l'autre doit être rechargé à partir de la source. Le faux aspect du partage survient lorsque les modifications apportées à la ligne de cache par un programme n’affectent pas réellement les données utilisées par le second programme. Dans ce cas, forcer le cache à être rechargé est un gaspillage de ressources système et peut affecter négativement la performance du programme. Le problème du faux partage est difficile à détecter, car il ne résulte pas directement d'un code contenu dans les applications, bien qu'il existe des moyens efficaces d'empêcher le faux partage, tel que le déplacement de données se trouvant sur une ligne actuellement mise en cache vers une ligne séparée. .
L'une des principales raisons pour lesquelles un faux partage peut se produire est la façon dont un système d'exploitation ou un matériel gère la lecture et l'écriture de données. Lorsque des informations d'un disque dur ou d'une autre source sont lues ou écrites par un programme, elles sont généralement chargées dans un cache temporaire afin de pouvoir y accéder rapidement. La quantité d'informations mises en cache à partir de l'emplacement source s'appelle une ligne de cache. Il s'agit d'un bloc de mémoire logique dont la longueur peut normalement être comprise entre 2 octets et 256 octets. Sous certains systèmes d'exploitation ou architectures système, les programmes peuvent s'exécuter simultanément, par exemple lors d'un traitement en parallèle. Cela signifie qu'il est possible que deux programmes distincts tentent d'accéder à des informations dans la même ligne de cache. Chaque programme disposera donc de sa propre copie des données source, ce qui pourrait entraîner des modifications de l'un des antémémoires, ce qui invaliderait les modifications. les données qu'il contient.
Un certain nombre de mécanismes sont utilisés pour gérer la situation lorsque deux programmes tentent d'accéder à la même ligne de cache, mais le résultat le plus souvent est qu'un programme est obligé de recharger son cache avec les informations mises à jour que l'autre programme a modifiées. Ce type d'incident est appelé faux partage lorsque les données de la ligne de cache auxquelles accède chaque programme ne sont pas liées. Par conséquent, obliger un programme à recharger le cache constitue un gaspillage de puissance de traitement et d'autres ressources. Il s’agit le plus souvent d’un problème pour un programme qui ne modifiera jamais les informations contenues dans son cache. Il n’ya donc aucun risque que l’application modifie les modifications apportées par l’autre processus.
Il existe deux manières de prévenir ou d’atténuer les effets d’un faux partage. La première consiste à ajouter des informations vierges avant ou après les données en mémoire, en les forçant essentiellement dans une ligne de cache distincte non utilisée par un autre programme. La deuxième méthode consiste à limiter la fréquence de lecture et d’écriture sur la ligne de cache afin que celle-ci soit rechargée le moins possible. Des solutions plus complexes impliquent une gestion au niveau du cache, voire des modifications de la manière dont un système d'exploitation gère le partage.