Une unité arithmétique-logique (ALU) est la partie d’un processeur d’ordinateur (CPU) qui effectue des opérations arithmétiques et logiques sur les opérandes dans les mots d’instructions informatiques. Dans certains processeurs, l’UAL est divisée en deux unités, une unité arithmétique (AU) et une unité logique (LU). Certains processeurs contiennent plus d’une unité arithmétique (AU) – par exemple, une pour les opérations en virgule fixe et une autre pour les opérations en virgule flottante. (Dans les ordinateurs personnels, les opérations à virgule flottante sont parfois effectuées par une unité à virgule flottante sur une puce séparée appelée coprocesseur numérique.)
Typiquement, l’UAL a un accès direct en entrée et en sortie au contrôleur du processeur, à la mémoire principale (mémoire vive ou RAM dans un ordinateur personnel) et aux dispositifs d’entrée/sortie. Les entrées et les sorties circulent le long d’un chemin électronique appelé bus. L’entrée consiste en un mot d’instruction (parfois appelé mot d’instruction machine) qui contient un code d’opération (parfois appelé « code op »), un ou plusieurs opérandes, et parfois un code de format. Le code d’opération indique à l’UAL l’opération à effectuer et les opérandes utilisés dans l’opération. Le format peut être combiné avec le code d’opération et indique, par exemple, s’il s’agit d’une instruction à virgule fixe ou à virgule flottante. La sortie consiste en un résultat qui est placé dans un registre de stockage et des paramètres qui indiquent si l’opération a été effectuée avec succès. (Si ce n’est pas le cas, une sorte d’état sera stocké dans un endroit permanent qui est parfois appelé le mot d’état de la machine.)
En général, l’UAL comprend des emplacements de stockage pour les opérandes d’entrée, les opérandes en cours d’addition, le résultat accumulé (stocké dans un accumulateur) et les résultats décalés. Le flux de bits et les opérations effectuées sur eux dans les sous-unités de l’UAL sont contrôlés par des circuits à portes. Les portes de ces circuits sont contrôlées par une unité logique de séquence qui utilise un algorithme ou une séquence particulière pour chaque code d’opération. Dans l’unité arithmétique, la multiplication et la division sont effectuées par une série d’opérations d’addition ou de soustraction et de décalage. Il existe plusieurs façons de représenter les nombres négatifs. Dans l’unité logique, l’une des 16 opérations logiques possibles peut être effectuée – comme la comparaison de deux opérandes et l’identification des endroits où les bits ne correspondent pas.
La conception de l’UAL est évidemment une partie critique du processeur et de nouvelles approches pour accélérer le traitement des instructions sont continuellement développées.