Fetch And Add en informatique, désigne l'instruction d'extraction et d'ajout de processeur (FAA pour Fetch-And-Add) incrémentant atomiquement le contenu d'un emplacement de mémoire par une valeur spécifiée. Autrement dit, l'instruction d'extraction et d'ajout effectue l'opération incrémentant la valeur à l'adresse x par a (où x est une adresse de mémoire et a est une valeur quelconque), puis retourne la valeur d'origine de l'adresse x, de telle sorte que si cette opération est exécutée par un processus dans un système simultané, aucun autre processus ne verra jamais un résultat intermédiaire. L'instruction d'extraction et d'ajout peut être utilisée pour implémenter des structures de contrôle de concurrence telles que des verrous d'exclusion mutuelle et des sémaphores. La motivation pour avoir une instruction d'extraction et d'ajout atomique est que les opérations qui apparaissent dans les langages de programmation comme x = x + a ne sont pas sûrs dans un système simultané, où plusieurs processus ou threads s'exécutent simultanément (soit dans un système multiprocesseur, soit planifié de manière préventive sur certains systèmes monocœur). La raison en est qu'une telle opération est en fait implémentée comme plusieurs instructions machine : Récupérez la valeur à l'emplacement x, disons , dans un registre ; ajouter a à dans le registre ; stocker la nouvelle valeur du registre dans x. Lorsqu'un processus est en cours et un autre fait simultanément, il y a une situation de compétition. Ils peuvent tous les deux récupérer et opérer sur cela, puis tous les deux stockent leurs résultats avec l'effet que l'un écrase l'autre et la valeur stockée devient soit ou , pas comme cela pourrait être attendu. Dans les systèmes à processeur unique sans prise en charge de la préemption du noyau, il suffit de désactiver les interruptions avant d'accéder à une section critique. Cependant, dans les systèmes multiprocesseurs (même avec les interruptions désactivées), deux processeurs ou plus peuvent tenter d'accéder à la même mémoire en même temps.
James Richard Larus, Nachshon Cohen
Anastasia Ailamaki, Pinar Tözün, Xin Tong