L'unité arithmétique et logique (UAL, en anglais arithmetic–logic unit, ALU), est l'organe de l'ordinateur chargé d'effectuer les calculs. Le plus souvent, l'UAL est incluse dans l'unité centrale de traitement ou le microprocesseur. Elle est constituée d'un circuit à portes logiques.
Les UAL peuvent être spécialisées ou pas. Les UAL élémentaires calculent sur des nombres entiers, et peuvent effectuer les opérations communes, que l'on peut séparer en quatre groupes :
Les opérations arithmétiques : addition, soustraction, changement de signe, etc.
les opérations logiques bit à bit : compléments à un, à deux, et, ou, ou exclusif, non, non-et, etc.
les comparaisons : test d'égalité, supérieur, inférieur, et leur équivalents « ou égal ».
éventuellement des décalages et rotations (mais parfois ces opérations sont externalisées).
Certaines UAL sont spécialisées dans la manipulation des nombres à virgule flottante, en simple ou double précision (on parle d'unité de calcul en virgule flottante (UVF, en anglais floating-point unit, FPU) ou dans les calculs vectoriels. Typiquement, ces unités savent accomplir les opérations suivantes :
addition, soustraction, changement de signe ;
multiplication, division, racine carrée ;
comparaisons ;
modulo.
Certaines UAL, le plus souvent de la classe des FPUs, notamment celles des superordinateurs, sont susceptibles d'offrir des fonctions avancées :
fonctions transcendantes (sin x, cos x, etc.) ;
opérations vectorielles (produit scalaire, vectoriel, etc.) ;
etc.
Les processeurs modernes font appel à plusieurs UAL, au moins deux : une située dans le chemin de contrôle pour incrémenter le compteur ordinal (de 1, 2, 4 ou 8 typiquement), et une autre dans le chemin de données pour traiter l'information. Pour augmenter leurs performances, elles sont le plus souvent pipelinées.
La figure ci-contre représente un schéma classique d'UAL.
Celle-ci possède deux entrées A et B sur lesquelles on présente les données à traiter. L'entrée F désigne l'opération à effectuer.