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.
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 |
|---|---|
|
|
|
|
|
|
|
|
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.
À 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).
|
|
code |
résultat |
|---|---|---|---|
6 |
3 |
|
|
6 |
3 |
|
|
6 |
3 |
|
|
6 |
3 |
|
|
12 |
10 |
|
Solution
On écrit 6 = 0110 et 3 = 0011 :
A + B: \(6 + 3 = 9\).A - B: \(6 - 3 = 3\).A ET B: bit à bit,0110 ET 0011 = 0010, soit2.A OU B: bit à bit,0110 OU 0011 = 0111, soit7.
Pour la dernière ligne, 12 = 1100 et 10 = 1010 : 1100 ET 1010 = 1000, soit
8.
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.
Placez deux entrées
AetB(largeur 8 bits) et une entréeopsur 2 bits :00= addition,01= soustraction,10= ET,11= OU.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), leETet leOUavec des portes appliquées bit à bit.Réunissez les quatre résultats dans un multiplexeur commandé par
op: sa sortie est le résultat de l'ALU.Testez chaque opération sur quelques valeurs (vérifiez par exemple
A + B,A - B,A ET B,A OU B).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.Enregistrez votre travail.