L'unité arithmétique et logique (ALU)#

Nous avons maintenant tous les morceaux qui savent calculer : l'additionneur, le soustracteur, et les portes logiques ET, OU, XOR, NON. Un processeur ne les garde pas éparpillés : il les rassemble dans un seul composant capable de réaliser, à la demande, l'une ou l'autre de ces opérations. Ce composant est l'unité arithmétique et logique, ou ALU (de l'anglais Arithmetic Logic Unit).

Qu'est-ce qu'une ALU ?#

L'ALU est la calculatrice du processeur. Elle reçoit deux valeurs à traiter, A et B (les opérandes), ainsi qu'un code opération qui indique quelle opération effectuer, et elle produit un résultat. C'est exactement le principe d'une calculatrice de poche : on tape deux nombres et on choisit une touche (+, , etc.) ; ici, le code opération joue le rôle de la touche.

Symbole de l'ALU en forme de trapèze : entrées A et B par le haut, code opération sur la gauche, résultat en bas, drapeaux sur la droite

Le symbole habituel d'une ALU. Les opérandes A et B entrent par le haut, le code opération choisit l'opération, et le résultat sort par le bas.#

Une même ALU réunit donc plusieurs opérations. Par exemple, avec un code opération sur 2 bits, on peut choisir parmi quatre opérations :

code

opération

00

A + B

01

A - B

10

A ET B

11

A OU B

Toutes les opérations à la fois, puis un choix#

Comment une ALU peut-elle "choisir" une opération ? On pourrait croire qu'elle décide d'abord, puis calcule. En réalité, c'est l'inverse : un circuit est toujours actif, il calcule en permanence. L'additionneur produit sans arrêt A + B, la porte ET produit sans arrêt A ET B, et ainsi de suite pour toutes les opérations, en même temps.

Le code opération ne sert donc pas à lancer un calcul, mais à choisir lequel de ces résultats on garde. C'est précisément le travail du multiplexeur : ses entrées sont les résultats de toutes les opérations, sa commande est le code opération, et sa sortie est le résultat retenu.

Structure interne d'une ALU : A et B alimentent quatre blocs (A+B, A-B, A ET B, A OU B) qui calculent en parallèle ; leurs sorties entrent dans un multiplexeur commandé par le code opération, dont la sortie est le résultat

À l'intérieur d'une ALU : toutes les opérations calculent en parallèle, et le multiplexeur ne laisse passer que celle qu'indique le code opération.#

On reconnaît ici tout ce qu'on a construit dans ce chapitre : le bloc A + B est l'additionneur, le bloc A - B est le soustracteur (qui réutilise lui-même l'additionneur et le complément à deux), et les blocs ET et OU sont de simples portes logiques appliquées bit à bit. L'ALU n'est donc pas un composant nouveau : c'est un assemblage de circuits déjà connus, coiffés d'un multiplexeur.

Dans la démonstration ci-dessous (une petite ALU sur 1 bit), réglez A et B, puis changez le code opération op (2 bits) et observez le résultat basculer d'une opération à l'autre.

Exercices#

Exercice 32#

On utilise l'ALU dont le code opération sur 2 bits est celui du tableau ci-dessus (00 = A + B, 01 = A - B, 10 = A ET B, 11 = A OU B). Les valeurs sont sur 4 bits. Pour chaque ligne, donnez le résultat (en décimal).

A

B

code

résultat

6

3

00

6

3

01

6

3

10

6

3

11

12

10

10

Exercice 33#

Construisez une petite ALU sur 1 bit à deux opérations. Si op = 0, le résultat doit être A XOR B (le bit de somme d'une addition) ; si op = 1, le résultat doit être A ET B. Utilisez une porte XOR, une porte ET et un multiplexeur commandé par op. Le bouton de contrôle vérifie votre circuit.

TP : construire l'ALU dans Logix#

Ouvrez Logix dans un nouvel onglet et construisez l'ALU de ce chapitre, celle qui servira au processeur. N'enregistrez pas ce TP en tant qu'exercice : c'est un circuit libre, que vous garderez pour la suite.

  1. Placez deux entrées A et B (largeur 8 bits) et une entrée op sur 2 bits : 00 = addition, 01 = soustraction, 10 = ET, 11 = OU.

  2. Calculez les quatre résultats en parallèle : l'addition et la soustraction avec l'additionneur (et l'astuce du complément à deux pour A - B), le ET et le OU avec des portes appliquées bit à bit.

  3. Réunissez les quatre résultats dans un multiplexeur commandé par op : sa sortie est le résultat de l'ALU.

  4. Testez chaque opération sur quelques valeurs (vérifiez par exemple A + B, A - B, A ET B, A OU B).

  5. Encapsulez votre circuit en un seul composant réutilisable nommé ALU (fonction de création de composant / sous-circuit de Logix). Vous le réutiliserez tel quel, comme une boîte noire, à la fin du chapitre.

  6. Enregistrez votre travail.