Robin
Pourt
aud
Une unité arithmétique et logique (UAL) ou ALU en anglais est un composant essentiel au fonctionnement de nos ordinateurs actuels. Souvent intégrée au
processeur pour effectuer de nombreuses opérations arithmétiques, cet article en présente un exemple simple, conçu avec le logiciel Logisim.
Table des matières
Caractéristiques de l’UAL : . . . 2
Entrées : . . . 2
Sorties : . . . 2
Opérations : . . . 2
Flags : . . . 3
Carry Flag (CF) : . . . 3
Zéro Flag (ZF) : . . . 4
Sign Flag (SF) : . . . 4
Overflow Flag (OF) : . . . 5
Mention : . . . 6
Robin Pourtaud - Devmath - 2020-12-27
Robin
Pourt
aud
Caractéristiques de l’UAL :
Notre UAL nous permet d’effectuer 7 opérations sur des entiers signés de 8 bits.
Entrées :
Notre UAL prend 3 entrées :
1. Un nombre sur 8 bits “A” utilisé en entrée des opérations.
2. Un nombre sur 8 bits “B” utilisé en entrée des opérations.
3. Un nombre sur 3 bits “ctr” utilisé pour sélectionner l’opération désirée.
Sorties :
Notre UAL possède 2 sorties :
1. Un nombre sur 8 bits étant le résultat de l’opération choisie.
2. Un nombre sur 4 bits présentant chaque flag.
Opérations :
Notre UAL peut nous autoriser à effectuer 8 opérations. Nous nous servirons uniquement de 7 d’entre elles :
0. ctr = 000 : Addition 1. ctr = 001 : Soustraction 2. ctr = 010 : OU bit à bit 3. ctr = 011 : Et bit à bit 4. ctr = 100 : Non bit à bit
5. ctr = 101 : Décalage à gauche logique 6. ctr = 110 : Décalage à droite logique
Robin
Pourt
Figure 1:Opérations - UAL
aud
Les opérations “non” et les 2 décalages se servent uniquement du premier nombre “A”. C+ et C- sont les carrys de l’addition et de la soustraction.
Flags :
Figure 2:4 bits Flags
Notre sortie flags est représentée par un 4 bit correspondant respectivement à CF, ZF, SF et OF.
Carry Flag (CF) :
Commentaire :Dans le cadre d’additions et de soustractions sur des nombres signés, le carry flag ne pourrajamaisêtre égal à 1. Vous pouvez donc relier le bit CF à “0”.
Cependant, dans le cadre de ce tutoriel, le circuit restera explicité :
• c+ est le carry de l’opération 000 (addition)
• c- est le carry de l’opération 001 (soustraction)
Robin
Pourt
aud
Figure 3:Carry Flag
• Si ctr = 000, alors CF = c+
• Si ctr = 001, alors CF = c-
• Sinon CF = 0
Zéro Flag (ZF) :
Le zéro flag est égal à 1 si et seulement si tous les bits de S sont égaux à 0 :
Figure 4:Zero Flag
Autrement dit :ZF =S0+S1+S2+S3+S4+S5+S6+S7
Sign Flag (SF) :
SF correspond au signe de S. Si S négatif, alors S = 1, sinon S=0.
Robin
Pourt
aud
Autrement dit :SF =S7
Figure 5:Sign Flag
Overflow Flag (OF) :
L’overflow flag est égal à 1 dans 4 cas différent:
1. Pour une addition : Si un positif + un positif = un négatif 2. Pour une addition : Si un négatif + un négatif = un positif 3. Pour une soustraction : Si un négatif - un positif = un positif 4. Pour une soustraction : Si un positif - un négatif = un négatif Dans les autres cas : OF = 0.
• S A est le signe de A
• S B est le signe de B
• SF est le signe de S
Figure 6:Overflow Flag
Robin
Pourt
aud
Autrement dit :
• OF+ =SA.SB.SF +SA.SB.SF
• OF−=SA.SB.SF +SA.SB.SF
• OF = OF+ si ctr = 000, OF- si ctr = 001, 0 sinon.
Mention :
Cette unité arithmétique et logique a été conçu dans le cadre d’un projet d’informatique en collabora- tion avec Mr Lucas Lelièvre que je remercie.