Section 2.8
Unité arithmétique et logique
Dans les sections précédentes, nous avons vu comment concevoir des circuits logiques pour réaliser des additions et des soustractions. Pour obtenir un soustracteur, nous avions apporté une très simple modification à l'additionneur. Dans cette section, nous allons commencer par voir comment modifier encore légèrement ce circuit afin de pouvoir choisir entre une addition et une soustraction à l'aide d'un bit de contrôle.
Considérez le circuit suivant, qui est une version modifiée du soustracteur que nous avons vu dans la section précédente.
À la place d'inverser inconditionnellement les bits de l'entrée B
avec des portes NON, nous utilisons ici des portes OU-X
pour inverser les bits de B
uniquement lorsque le
bit de contrôle + / -
est à 1
.
Ainsi, lorsque + / -
est à 0
, B
est
laissé intact, et l'additionneur fonctionne normalement.
Par contre, lorsque + / -
est à 1
, les bits de
B
sont inversés, une retenue ajoutée, et ainsi l'additionneur devient un soustracteur.
Le circuit ci-dessus est intéressant car l'opération d'addition ou de soustraction est déterminée par une entrée du circuit. Il s'agit d'un exemple de circuit dont le comportement est configurable. Nous pouvons pousser cette idée un peu plus loin et permettre de choisir entre plus d'opérations. C'est ce qui est réalisé par des circuits appelés unités arithmétiques et logiques, ou ALU (pour Arithmetic and Logic Unit). Ces circuits permettent de choisir entre plusieurs opérations arithmétiques (comme l'addition et la soustraction) et logiques (comme le ET et le OU, par exemple). Ci-dessous est un exemple d'une ALU très simple, représentée comme un unique composant, qui permet de choisir entre quatre opérations.
! Remarque
L'implémentation de l'ALU ci-dessus n'est pas discutée en détails ici. Si vous êtes curieux, essayez de réfléchir à quels composants abordés plus tôt dans ce chapitre, pourraient être utilisés pour réaliser une ALU.