Unité Artithmétique & Logique

ALU
Arithmetical & Logical Unit

Accueil
du Site

Précédent -Suivant


ALU ?
On donne le nom d'ALU à une partie d'un processeur particulièrement destinée à effectuer des calculs de nature arithmétique (additions, multiplications, etc.)
ou logique (fonctions "ou" fonctions "et" etc.)

Ce que je propose d'étudier dans la suite:

  1. Un schéma décrivant les registres qu'elle met en jeu dans ces opérations.
  2. Le processus général des calculs
  3. Les divers types de calculs qu'elle peut effectuer
  4. Quelques formes & applications typiques de ces calculs


1 - Schéma d'une ALU typique


Ce schéma est une abstraction ne correspondant exactement à aucun processeur réel,
mais les représentant pratiquement tous dans leur principe.

Lorsque vous consulterez la fiche technique du processeur qui vous intéresse,
vous n'aurez aucun mal à traduire ce schéma dans la réalité de votre projet.
Il vous suffira pratiquement de changer les noms des registres.
Ce schéma ne représente pas la totalité des registres de l ' UC.
mais seulement ceux qui sont en relation avec l'ALU.

  • R1...Rn représentent, dans mon schéma, des registres internes de l'unité centrale
    pouvant contenir des opérandes

    Le nombre de ces registres, leur nombre de bits et leurs noms diffèrent suivant le UC.
    Il est également noter que les UC peuvent prendre comme opérandes les contenus de registres situés en mémoire externe
    .
    L'accès à la mémoire externe est plus coûteux en temps que celui aux registres internes.
    Tout l'art du programmeur en langage machine
    consiste à choisir, parmi les diverses combinaisons possibles d'instructions, les moins coûteuses en temps.


  • A est un registre interne particulier appelé ACCUMULATEUR.
    C'est une registre également destiné à contenir des opérandes mais dont la disposition particulière permet un accès (copiage ou restitution d'une donnée) plus rapide que pour les autres registres internes.
    Le résultat de l'opération (A×Rn par ex.) est automatiquement mémorisé en A par l'ALU,
    écrasant ainsi l'opérande initial qui y avait été placé.
    Mais ceci dépend grandement du type d'UC.
    Dans la suite, j'emploierai les noms de registres Rp, Rq pour désigner l'un quelconque des registres internes, y compris A.

  • RE (Registre d'Etat) ou SR (State Register) - est un registre spécial dont les bits reflètent les états internes de l'UC. En particulier les cas d'exception résultant d'une opération.
    Dépassement de capacité du registre destiné au résultat, résultat nul etc.
    Ex. Registre d'état d'un "Pentium" :

Taille des registres internes
Le nombre de bits de chacun des registres dépend du modèle d'unité centrale que vous utilisez.
8 bits pour les tout petits processeurs destinés à des opérations d'automatisation embarquée
jusqu'à 32 bits voire 64 et 128 bits dans les unités centrales pour ordinateurs performants.
Certains processeurs spécialisés en calcul utilisent un format de registres de 80 bits
adapté aux normes de représentation des réels IEEE 754.


2-1 Processus général du calcul
  • Avant de lancer l'opération, les deux opérandes doivent se trouver, l'un dans l'accumulateur,
    l'autre dans un registre de données quelconque (R1 à Rn dans le schéma de principe ci-dessus) Pour certains processeurs, l'opération est possible entre registres R1 à Rn ou même avec la mémoire externe.

    L'opération qui consiste à remplir lesdits registres avec les opérandes sort du propos du présent chapitre. C'est une opération de mouvement de données entre registres ou une acquisition de données externes dans une mémoire ou un capteur de données numériques externes.

  • Comme toute action de l'UC, l'opération elle-même est commandée par une instruction du programme. C'est une suite de codes binaires peu pratique à manipuler.

    Pour cette raison, nous utiliserons ici le langage assembleur qui désigne en clair les instructions opératoires (ADD, SUB, MUL, DIV) et les registres impliqués (R1,...Rn,Acc, etc.)

    La syntaxe de l'assembleur est propre à chaque processeur.
    J'emploierai ici une syntaxe formelle pour yn processeur type qui n'existe pas.
    Celle de votre processeur peut en différer, mais l'analogie est plus forte que les petites différences que vous rencontrerez.

    Exemple :

    L'instruction ADD Rp,Rq signifie que le processeur doit ADDitionner Rp et Rq.
    En général, le résultat est mis dans Rq, suivant la syntaxe fréquente : ADD Sce,Dest.
    Mais certaines unités centrales utilisent la syntaxe ADD Rp : Rp est ajouté à l'Accumulateur.
    qui reçoit implicitement le résultat, "écrasant" ainsi l'opérande qui s'y trouvait.
    .

    On trouve également une syntaxe du type : ADD
    Rp,51 ou ADD A,51.
    Le nombre 51 est ajouté à Rp ou à l'accumulateur dont la valeur initiale est "écrasée" par la somme.


    Une autre possibilité : ADD Mem, Rp
    La valeur contenue par le registre en mémoire externe symbolisé ici par "Mem"
    est ajouté à celle du registre interne Rp dont la valeur initiale est "écrasée" par la somme.
    Cette opération est beaucoup moins rapide du fait que l'accès à la mémoire externe est beaucoup plus lent que celui aux registres internes. Voir :


    Vérifiez bien sur la fiche technique de votre processeur la syntaxe et les modalités exactes des opérations : elles peuvent différer de mes exemples, mais vous vous adapterez facilement...

.


2-2 Registre d'état

Le registre d'état d'une unité centrale regroupe de nombreux bits
servant d'indicateurs ( flags) pour nous informer à un moment précis,
de l'état de la machine sur de nombreux aspects.
Ex. Registre d'étaut d'un "Pentium" :
Nous ne nous intéressons ici qu'aux indicateurs concernant les opérations numériques et logiques.

Ces indicateurs sont toujours positionnés par l'ALU de la machine
tout juste après qu'elle ait effectué une opération numérique ou logique.

Autrement dit, les états de ces indicateurs reflètent
les résultats de la dernière opération effectuée par l'ALU.

Indicateur
Etat
 Le résultat de la dernière opération...
ZF
(zéro flag)
1
...est un nombre nul.
0
...est un nombre non nul.
OV
(overflow flag)
1
...a dépassé la capacité du registre cible.
0
...n'a par dépassé la capacité du registre cible.
CY ou CF
(carry flag)
1
...a produit un report.
0
...n'a pas produit de report.
SF
(sign flag)
1
...a produit un nombre négatif. Rappels en : &
0
...a produit un nombre positif ou nul.
PF
(parity flag)
1
...est un binaire ayant un nombre pair de "1"
0
...est un binaire ayant un nombre impair de "1"
D(A)F
(Decimal Adjust flag)
1
...a produit un report dans le format BCD (Binary Coded Decimal)
0
...n'a pas produit de report dans le format BCD

Les indicateurs sont surtout utilisés par les instructions de contrôle de flux
( que nous examinons dans une autre page de ce site : )
pour aiguiller le déroulement d'un programme en fonction du résultat d'une opération.

Par exemple, la suite d'un programme peut être dfférente si le résultat de telle opération est nul ou non.
Les instructions correspondantes sont du type :

JZ / JNZ
Jump if zero / Jump if not zero ( Jump = saut )
JC / JNC
Jump if carry / Jump if not carry
JO / JNO
Jump overflow / Jump if not overflow (ovefflow = débordement)
JS / JNS
Jump if sign (negative) / Jump if not sign
JPE / JP
Jump if parity even / Jump if parity (even = paire)

Ces instructions sont examinées dans une autre partie du cours :
 
Les informations précédentes sont des généralités qui regroupent la plupart des fonctions
des indicateurs dans la plupart des ALU des unités centrales existantes.
Comme chaque unité centrale a ses particularités,
il est indispensable que vous consultiez la notice de l'unité centrale que vous mettrez en oeuvre.


3-1 Opérations arithmétiques

Il s'agit d'opérations effectuées sur des nombres entiers ( integers)
représentés en binaire dans des registres internes de l'UC.

Prérequis :
écriture des nombres binaires entiers signés : , et des réels :

En majuscules dans la suite, les instructions (ADD, SUB, etc.)
correspondent aux codes écrits en assembleur des diverses opérations,
Elles diffèrent légèrement suivant les processeurs utilisés.
Vérifiez bien leur traduction particulière dans la fiche technique de votre UC.
Notez bien qu'il s'agit de symboles utilisés pour érire le programme en assembleur
destinés à la compréhension des humains et pas des codes binaires auxquels ils correspondent
compréhensibles, eux, par la machine qu'est UC.
Là encore, si vous voulez connaître leur traduction binaire,
adressez-vous à la fiche technique de votre UC.

Voici pour commencer un bref aperçu des opérations arithmétiques
exécutables par la plupart des processeurs.
Suivra un aperçu plus détaillé,
puis une analyse de certaines particularités de ces opérations.

Opérations essentielles

Code
Assembleur
 Fonction
Exemples

ADD ou ADC

Addition de deux binaires
 

SUB ou SBB

Soustraction de deux binaires
 
MUL ou IMUL
Multiplication de deux binaires  
DIV
Division de deux binaires  
INC ou DEC
Incrémentation - Décrémentation
CMP
Comparaison de deux binaires
NEG
Négation du contenu d'un registre
Des instructions analogues existent aussi
pour effectuer les opérations en BCD (Binary Coded Decimal).

Des variantes particulières seront traitées plus loin.

Quelques exemples d'implémentation pour le microcontrôleur 8051

ADD A,R5
Ajoute le contenu du registre R5 à l'accumulateur.
SUB A,#5FH
Soustrait 5F16au contenu de l'acumulateur.
MUL AB
Divise le contenu de l'Accumulateur par celui du registre B,
les 8 bits de poids faible (LSB) son mis dans l'Accumulateur
les 8 bits de poids fort (MSB) son mis dans B.
etc.
 

3-2 Opérations logiques
Voici un bref aperçu des opérations logiques
exécutables par la plupart des processeurs.
Pointez ou cliquez sur les icônes pour des indications plus détaillées.
Opérations essentielles
Code
Assembleur
 Fonction
Exemples

AND

"ET" binaire bit à bit

OR

"OU" binaire bit à bit
XOR
"OU EXCLUSIF" binaire bit à bit
NOT
"NON" binaire bit à bit
SHR, SHL
"DÉCALAGES" binaires bit à bit
ROT
"ROTATIONS" binaires bit à bit
BT
"BIT TEST" test d'un bit dans un registre.
Des variantes particulières seront traitées plus loin

4° Quelques exemples d'applications
 

J'arrête là pour aujourd'hui



Orientation

Précédent -Suivant
Sommaire
Mémoires
Types de mémoires
Mémoires magnétiques
Unité centrale
ALU
Sélection d'adresses
Multiplexage
Contrôle de flux
Mouvements de données
Architectures matérielles
Sommaire

du Site