sif-10531 cours 6 n 3. construction dun ordinateur f les circuits arithmétiques f lunité...

54
sif-1053 1 Cours 6 3. Construction d’un ordinateur Les circuits arithmétiques L’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

Upload: melanie-langlais

Post on 04-Apr-2015

105 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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

Page 2: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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.

Page 3: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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).

Page 4: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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 ...

Page 5: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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.

Page 6: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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).

Page 7: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

sif-1053 7

Le circuit additionneur complet peut être conçu avec des demi-additionneurs et une porte OU.

S

C

Page 8: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

sif-1053 8

Page 9: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

sif-1053 9

Page 10: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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

Page 11: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

sif-1053 11

Un soustracteur

Page 12: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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

Page 13: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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

Page 14: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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

Page 15: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

sif-1053 15

Les circuits de décalage binaires

Page 16: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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

Page 17: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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

Page 18: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

sif-1053 18

Les circuits de décalage binaires

Page 19: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

sif-1053 19

Les circuits de décalage binaires

Page 20: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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}

Page 21: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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

}

Page 22: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

sif-1053 22

Les circuits de multiplicationc * a = 45 * 57= 2565

2565

Page 23: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

sif-1053 23

Les circuits de multiplication

 Algorithme de multiplication binaire par accumulation des produits partiels

Page 24: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

sif-1053 24

Les circuits de multiplication

 Structure du dispositif de multiplication binaire par accumulation des produits partiels

Page 25: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

sif-1053 25

Les circuits de multiplication

 Autre exemple de multiplication binaire par accumulation des produits partiels

+_

__

_

+

+

multiplicateur multiplicande

résultat

Page 26: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

sif-1053 26

Les circuits de division entière Exemple de division binaire crayon papier

Dividende

Diviseur

Quotient

Reste

Page 27: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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

Page 28: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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

Page 29: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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

Page 30: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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

Page 31: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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

Page 32: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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

Page 33: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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

Page 34: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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

Page 35: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

sif-1053 35

Les circuits de division entière  Algorithme de division binaire par restauration des restes partiels

Page 36: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

sif-1053 36

Les circuits de division entière  Structure du dispositif de division binaire par restauration des restes partiels

Page 37: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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

-

-

-

-

Page 38: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

sif-1053 38

Unité arithmétique et logique

10

1

Page 39: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

sif-1053 39

Unité arithmétique et logique

Page 40: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

sif-1053 40

Unité arithmétique et logique

Page 41: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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

Page 42: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

sif-1053 42

L’unité point flottant (FPU)  Norme IEEE-754

Page 43: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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

Page 44: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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

Page 45: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

sif-1053 45

Éléments fondamentaux de la programmation en langage C Exemple d’I/O

Page 46: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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

Page 47: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

sif-1053 47

Éléments fondamentaux de la programmation en langage C Fonctions et passage de paramètres (par valeur)

Page 48: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

sif-1053 48

Éléments fondamentaux de la programmation en langage C Fonctions et passage de paramètres (par référence)

Page 49: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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()

Page 50: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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

Page 51: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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)

Page 52: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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

Page 53: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

sif-1053 53

Gestion de fichiers (exemple: ouverture et manupulation)

Ligne de commande

Page 54: Sif-10531 Cours 6 n 3. Construction dun ordinateur F Les circuits arithmétiques F Lunité arithmétique et logique (UAL) F Travail pratique #2 Division entière

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