Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité...
-
Upload
melanie-langlais -
Category
Documents
-
view
106 -
download
1
Transcript of Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité...
sif-1053 1
Cours 6
3. Construction d’un ordinateur
Les circuits arithmétiquesL’unité arithmétique et logique (UAL)Travail pratique #2
• Division entière positive
Le matériel
Chapitre 5 CSA Chapitre 3 et 4 CSAPP Synthèse du professeur
sif-1053 2
Les circuits arithmétiques
Nous allons voir, dans cette section, que des circuits logiques combinatoires (combinaison de circuits logiques) relativement simples (connexion de quelques portes) peuvent effectuer des additions.
Ce qui entraîne comme nous l’avons vu au chapitre précédent, la possibilité de réaliser également des soustractions, des multiplications et des divisions.
sif-1053 3
Additionneur simple
L’addition de nombres binaires est une opération très simple que l’on représente par une table de vérité à 2 variables.
Les entrées à additionner sont A et B, la sortie somme est désignée par S et la colonne de retenue par Co (de l’anglais, Carry output).
sif-1053 4
Ce qui est évidemment très simple, et qui nous fait comprendre l’utilité de la porte XOU. Ce circuit additionneur (ou cellule d’addition) porte le nom de demi-additionneur DA (pour des raisons qui deviendront compréhensibles dans quelques instants) et on le représente souvent par le schéma ...
sif-1053 5
Si on additionne deux nombres binaires qui contiennent plus d’un chiffre binaire (ce qui est habituellement le cas), le DA ne nous permet pas de tenir compte des retenues produites.
En effet, si la première colonne de chiffre est 1+1, il nous faut transmettre la retenue au DA de la deuxième colonne pour qu’il puisse en tenir compte.
sif-1053 6
Il nous faut donc une troisième entrée à notre circuit additionneur, afin de permettre l’addition d’une retenue générée par les chiffres de la colonne précédente.
La troisième entrée est identifiée Ci (de l’anglais, Carry input), le circuit porte le nom d’additionneur complet (AC).
sif-1053 7
Le circuit additionneur complet peut être conçu avec des demi-additionneurs et une porte OU.
S
C
sif-1053 8
sif-1053 9
sif-1053 10
Un soustracteur La soustraction représente dans les faits l’addition du complément à deux du second terme impliqué dans la soustraction
sif-1053 11
Un soustracteur
sif-1053 12
Un soustracteur Schématiquement, l’UC doit fournir un signal pour indiquer quelle opération l’ALU doit effectuer et mettre l’entrée Carry In à 1
1
Calcul du complément à un
sif-1053 13
Les circuits de décalage binaires Décalage des bits d’un nombre de positions
vers la gauche (peut permettre une multiplication par des multiples de 2)SHL AL, 1
SHL BX, 25 ; 80286
1 1 0 0 10 1 1
AL
0
1 0 0 0 01 1 1
sif-1053 14
Les circuits de décalage binaires Décalage des bits d’un nombre de positions
vers la droite (peut permettre une division par des multiples de 2)SHR AL, 1
SHR BX, 25 ; 80286
1 1 0 0 10 1 1
AL
0
0 1 1 0 10 0 1
sif-1053 15
Les circuits de décalage binaires
sif-1053 16
Les circuits de décalage binaires Décalage des bits d’un nombre de positions
vers la gauche avec réinsertion par la droiteROL AL, 1
ROL BX, 25 ; 80286
1 1 0 0 10 1 1
AL
1 0 0 0 11 1 1
sif-1053 17
Les circuits de décalage binaires Décalage des bits d’un nombre de positions
vers la droite avec réinsertion par la gaucheROR AL, 1
ROR BX, 25 ; 80286
1 1 0 0 10 1 1
AL
1 1 1 0 10 0 1
sif-1053 18
Les circuits de décalage binaires
sif-1053 19
Les circuits de décalage binaires
sif-1053 20
Les circuits de multiplication entière Rappel sur le processus de multiplication décimale et binaire
173 10101101 Multiplicande
57 X 00111001 X Multiplicateur
1211 10101101
8650 00000000
9861 00000000
10101101
10101101
10101101
00000000
00000000_______
0010011010000101
Produits partiels}
sif-1053 21
Les circuits de multiplication entière Fonction en langage C qui permet d’effectuer la multiplication entière de deux nombres entiers de 16 bits utilisant des opérations d’additions et de décalages
Multiplicateur
Multiplicande
}
sif-1053 22
Les circuits de multiplicationc * a = 45 * 57= 2565
2565
sif-1053 23
Les circuits de multiplication
Algorithme de multiplication binaire par accumulation des produits partiels
sif-1053 24
Les circuits de multiplication
Structure du dispositif de multiplication binaire par accumulation des produits partiels
sif-1053 25
Les circuits de multiplication
Autre exemple de multiplication binaire par accumulation des produits partiels
+_
__
_
+
+
multiplicateur multiplicande
résultat
sif-1053 26
Les circuits de division entière Exemple de division binaire crayon papier
Dividende
Diviseur
Quotient
Reste
sif-1053 27
Les circuits de division entière Algorithme de division binaire par restauration des restes partiels (nombres entiers positifs de 4 bits)
INPUT: a: DIVIDENDE, b: DIVISEUR
OUTPUT: a: RESTE-QUOTIENTunsigned char division(unsigned char a, unsigned char b)
DEBUT
decalage de b de 4 bits à gauche (b = b << 4;)
POUR i ALLANT DE 0 À 3 FAIRE
decalage de a de 1 bit à gauche
SI (a >= b) ALORS // DIVIDENDE >= DIVISEUR
a = a-b
a = a + 1
FINSI
FIN POUR
retourner a
FIN
sif-1053 28
Les circuits de division entière Algorithme de division binaire par restauration des restes partiels (nombres entiers positifs de 4 bits)
exemple: 9/4
0 0 0 0 11 0 0
0 0 0 0 00 1 0
a
b
Au début
0 0 0 0 11 0 0
0 1 0 0 00 0 0
a
b
Décalage de b de 4 bits à gauche
4
sif-1053 29
Les circuits de division entière Algorithme de division binaire par restauration des restes partiels (nombres entiers positifs de 4 bits)
exemple: 9/4
0 0 0 1 00 0 1
0 1 0 0 00 0 0
a
b
Itération i = 0
0 0 0 1 00 0 1
0 1 0 0 00 0 0
a
b
1
a>=b
sif-1053 30
Les circuits de division entière Algorithme de division binaire par restauration des restes partiels (nombres entiers positifs de 4 bits)
exemple: 9/4
0 0 1 0 00 1 0
0 1 0 0 00 0 0
a
b
1
a>=b
0 0 1 0 00 1 0
0 1 0 0 00 0 0
a
b
Itération i = 1
sif-1053 31
Les circuits de division entière Algorithme de division binaire par restauration des restes partiels (nombres entiers positifs de 4 bits)
exemple: 9/4
1
a>=b
0 1 0 0 01 0 0
0 1 0 0 00 0 0
a
b
Itération i = 2
0 1 0 0 01 0 0
0 1 0 0 00 0 0
a
b
sif-1053 32
Les circuits de division entière Algorithme de division binaire par restauration des restes partiels (nombres entiers positifs de 4 bits)
exemple: 9/4
a = a - b
0 1 0 0 01 0 0
0 1 0 0 00 0 0
a
b
Itération i = 2
a = a + 1
0 0 0 0 11 0 0
0 1 0 0 00 0 0
a
b
sif-1053 33
Les circuits de division entière Algorithme de division binaire par restauration des restes partiels (nombres entiers positifs de 4 bits)
exemple: 9/4
1
a>=b
Itération i = 3
0 0 0 1 00 0 1
0 1 0 0 00 0 0
a
b
0 0 0 1 00 0 1
0 1 0 0 00 0 0
a
b
RESTE QUOTIENT
sif-1053 34
Les circuits de division entière Travail pratique 2 (programme principal)
Nom du fichier
Mode d’ouverture
// arg1: pointeur du fichier destination // arg2: format d’affichage des objets// arg3: liste des objets écrits
Format de l’objet lu
Pointeur sur l’objet en mémoire
sif-1053 35
Les circuits de division entière Algorithme de division binaire par restauration des restes partiels
sif-1053 36
Les circuits de division entière Structure du dispositif de division binaire par restauration des restes partiels
sif-1053 37
Les circuits de division entière Exemple de division par l ’algorithme de
division binaire par restauration des restes partiels
+
+
+
+
+
+
+
dividende diviseur
quotientreste
-
-
-
-
sif-1053 38
Unité arithmétique et logique
10
1
sif-1053 39
Unité arithmétique et logique
sif-1053 40
Unité arithmétique et logique
sif-1053 41
L’unité point flottant (FPU) Unité responsable du calcul en point flottant
Les nombres réels et les programmes en langage C
sif-1053 42
L’unité point flottant (FPU) Norme IEEE-754
sif-1053 43
L’unité point flottant (FPU) Exemple de programme en langage C qui emmagasine des objets réels dans un fichier binaire
fclose(fp);
Nom du fichier
Mode d’ouverture
// arg1: pointeur sur les objets écrits// arg2: format des objets// arg3: nombre d’objets écrits// arg4: pointeur du fichier destination
sif-1053 44
Éléments fondamentaux de la programmation en langage C Exemple d’I/O
// lecture d’objets au clavier
Format de l’objet lu Pointeur sur l’objet en mémoire
sif-1053 45
Éléments fondamentaux de la programmation en langage C Exemple d’I/O
sif-1053 46
Éléments fondamentaux de la programmation en langage C Fonctions et passage de paramètres
En langage C, nous pouvons passer des informations aux fonctions via son interface et ce de deux façons distinctes:Passage par valeur: valeurs actuelles
sont passées Passage par référence (adresse):
pointeurs sont passés
sif-1053 47
Éléments fondamentaux de la programmation en langage C Fonctions et passage de paramètres (par valeur)
sif-1053 48
Éléments fondamentaux de la programmation en langage C Fonctions et passage de paramètres (par référence)
sif-1053 49
Éléments fondamentaux de la programmation en langage C
Gestion de fichiersPour traiter un fichier en langage C il faut respecter les étapes suivantes:Ouvrir le fichier par une fonction libc
fopen()Opérations sur les données du fichier:
•Lecture: fscanf(), fread(), getc()•Écriture: fprintf(), fwrite(), putc()•Positionnement: fseek()•Fin de fichier: feof()
Fermeture du fichier: fclose()
sif-1053 50
Éléments fondamentaux de la programmation en langage C Gestion de fichiers (ouverture)
Lors de l’ouverture d’un fichier il faut préciser le mode d’utilisation du fichier:“r”: ouverture en mode lecture seule“w”: ouverture en mode écriture seule,
écrase l’ancien fichier si il existait déjà“a”: ouverture en mode écriture à la fin du
fichier si il existe déjà, ou ouverture en mode écriture seule si le fichier est nouveau
“r+”: (read/modify) ouverture en mode lecture et modification
sif-1053 51
Éléments fondamentaux de la programmation en langage C Gestion de fichiers (ouverture)
Lors de l’ouverture d’un fichier il faut préciser le mode d’utilisation du fichier:“w+”: (write/modify) création ou
écrasement d’un fichier pour écriture et modification
“a+”: (append/modify) ouverture en mode ajout et modification
Nous pouvons aussi spécifier le type de fichier:t (text): le contenu du fichier est considéré
comme des caractèresb (binary): le contenu est sous format
binaire selon le type des données manipulées (données entières, float, structures etc)
sif-1053 52
Gestion de fichiers (exemple: ouverture et manupulation)
Pointeur sur le fichier destination
Format d’écriture dans le fichier Objets écrits
Pointeur sur le fichier source
sif-1053 53
Gestion de fichiers (exemple: ouverture et manupulation)
Ligne de commande
sif-1053 54
Éléments fondamentaux de la programmation en langage C Gestion de fichiers (ouverture et manipulation)
Arguments passés à la fonction main()Le premier argument représente le nombre
d’arguments de la ligne de commande (int argc)
Le second paramètre est un vecteur de pointeurs sur des chaînes de caractères (char **argv ou char *argv[])
•argv[0]: nom de l’exécutable•argv[1]: argument 1•argv[2]: argument 2•.•.•argv[argc-1]: argument argc-1