chap2 vonneumann.pdf

40
Programmation Système et Réseau 1 Par : Nozha CHERIF [email protected]

Upload: ghassen-ouni

Post on 31-Dec-2015

83 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Chap2 VonNeumann.pdf

Programmation Système et Réseau

1

Par : Nozha CHERIF [email protected]

Page 2: Chap2 VonNeumann.pdf

Programmation Système et Réseau

2

Par : Nozha CHERIF

Architecture de Von Neuman

Chapitre 2

Page 3: Chap2 VonNeumann.pdf

PLAN

3

•Concept général de la machine de Von Neumann •Concept détaillé de l’architecture

Mémoire Module d’E/S Bus Processeur Exécution d’une instruction Niveaux de programmation

Page 4: Chap2 VonNeumann.pdf

Concept général

4

• En 1946, John Von Neumann: mathématicien américain d’origine hongroise, a définit un modèle de l’architecture interne que doit avoir un ordinateur (on l’a nommé machine de Von Neumann). •Ce modèle d’architecture de Von Neumann régit jusqu’à nos jours, et représente l’architecture sur laquelle se base nos ordinateurs actuels.

Page 5: Chap2 VonNeumann.pdf

Caractéristiques de l’architecture de Von Neumann:

5

• Un ordinateur doit avoir au minimum 4 composants

suivants: Mémoire (qui permet le stockage de l’information) Processeur = dit aussi UCT(Unité Centrale de

Traitement) = en anglais CPU(Central Processing Unit)=qui est constitué de deux entités nommées: o UAL (Unité Arithmétique et Logique) o UC (Unité de Contrôle) dite aussi de Commande

Unité d’Entrées-Sorties (E/S)

• Les 4 composants sont reliés via un bus dit bus système (nous allons le définir plus tard dans ce même cours).

Page 6: Chap2 VonNeumann.pdf

Architecture de Von Neumann

6

Stocke

Réalise le traitement: les

opérations élémentaires Arithmétique

et Logique

Chef d’orchestre:

gère le déroulement

des opérations du programme

Echange d’information avec le monde

extérieur (périphériques

d’E/S)

Page 7: Chap2 VonNeumann.pdf

Notions globaux (1):

7

• Tout au long de ce cours, nous allons comprendre la fonctionnalité de chaque composant individuellement et puis comment se fait la communication entre eux.

• La mémoire centrale dite aussi principale est un dispositif

capable de stocker les informations: l’information peut être de type programme qui est en cours d'exécution (auquel on a fait appel ou bien par l’utilisateur via des touches clavier ou clic souris ou bien un programme qui a fait appel à un autre programme) ou bien de type données (chiffres, lettres..) qui sont utilisées ou traitées par ce programme.

• Un programme = est du traitement de l’information écrit sous forme d’une suite d’instructions (instruction= opération, tâche à effectuer)

Page 8: Chap2 VonNeumann.pdf

Notions globaux (2):

8

• Le processeur est divisé en deux entités : l’UAL et l’UC, mais dispose aussi registres (un registre = espace de stockage : petite mémoire de faible capacité de stockage mais on peut y accéder rapidement pour récupérer des données fréquemment utilisées et effectuer des traitement locaux au sein même du processeur, sans avoir recours à un autre type de mémoire).

• Les autres données sont en mémoire principale ou sur des

circuits périphériques (exemple: proviennent du clavier)

Page 9: Chap2 VonNeumann.pdf

Fonctionnement global des composants:

9

Principe de fonctionnement global de l’ordinateur, que nous allons

développer par la suite pas à pas:

L’unité de commande (UC) extrait (= lit) les instructions du programme à exécuter une à une depuis la mémoire.

Une fois, l’instruction arrivée et analysée par l’UC, l’UC donne

l’ordre de sélectionner les opérandes (= les données que traite l’instruction) en indiquant leur emplacement, aussi l’opération à faire (+ - ET OU…) et l’emplacement du résultat.

Déclenchement de l’opération élémentaire adéquate sur l’unité

de calcul (unité arithmétique et logique UAL). Eventuellement rangement du résultat dans la mémoire ou

dans un périphérique.

Page 10: Chap2 VonNeumann.pdf

Fonctionnement global des composants:

10

Page 11: Chap2 VonNeumann.pdf

Fonctionnement global des composants:

11

Exemple: l’instruction est : additionner le contenu du registre R3 et R5 et mettre le résultat dans le registre R1 .

1 2

3 Sélection destination

Page 12: Chap2 VonNeumann.pdf

Composant 1: Mémoire

12

• La mémoire centrale ou principale ou RAM (Random Access Memory) stocke le programme en cours d'exécution et les données utilisées par ce programme.

• RAM : Random Access Memory : – Mémoire accessible en écriture (on peut y sauvegarder des informations) et lecture (récupérer une information déjà stockée). – Mémoire volatile : son contenu est vidé en l'absence d'alimentation (si système éteint, les dernières informations sont oubliés)

Page 13: Chap2 VonNeumann.pdf

Composant 1: Mémoire

13

• La mémoire est constituée d'un ensemble

de cellules (=cases), où on stocke (mémorise) des informations toutes de même taille (même nombre de bit): chaque information est dite mot-mémoire.

• Chaque mot mémoire est repéré par son

adresse @.

Page 14: Chap2 VonNeumann.pdf

Composant 1 : Mémoire

14

La taille du mot mémoire (« w »: sur combien de bits, le mot mémoire est écrit) est généralement en Octet (sur 8 bits), mais peut être de 8, 16, 32 ou 64 bits sur les systèmes récents.

L’adresse est écrite sur N bits, donc on dispose de 2N mots mémoire. si le mot mémoire est un octet, on mesure la capacité totale de la mémoire(=le nombre de bits qu’elle peut contenir) en octet = 2N.

les préfixes usuels pour les RAMs:

Page 15: Chap2 VonNeumann.pdf

Composant 1 : Mémoire

15

Les opérations niveau mémoire: Fetch (=read): lecture du contenu d’une cellule mémoire (mot mémoire) ayant une adresse spécifiée à l’avance. Store (=write): Ecriture d’un mot mémoire à une

adresse bien déterminée.

La mémoire est interfacée (interrogée) via: Registre d’adresse RA = Memory Adress Register (MAR)

contient l’adresse d’une donnée Registre Mot RM= registre d’échange de données=

Memory Data Register (MDR) Signal Lecture/Ecriture = Fetch/Store signal

⇒ Comment se déroule l’exécution d’une opération au niveau de la mémoire?

Page 16: Chap2 VonNeumann.pdf

Composant 1 : Mémoire

16

Déroulement d’une opération de lecture : lire (adresse @): Si on veut effectuer une opération de lecture, on doit d’abord disposer de l’adresse du mot mémoire qu’on veut lire, d’où les étapes suivantes :

Charger l’@ dans le registre d’adresses MAR

Décodage de l’adresse a lieu au niveau du circuit décodeur (voir figure)

Copier la valeur contenue à l’@ précisée dans le registre MDR.

Page 17: Chap2 VonNeumann.pdf

Composant 1 : Mémoire

17

Opération Store(address, value): Pour enregistrer un contenu dans la

mémoire, il faut d’abord spécifier où (son adresse), et la valeur du contenu, les étapes de l’opération sont alors:

Charger l’@ dans MAR Charger value dans MDR Décoder l’adresse dans MAR Copier le contenu de MDR

dans cellule mémoire ayant l’adresse @mentionnée.

Page 18: Chap2 VonNeumann.pdf

Composant 1 : Mémoire

18

Page 19: Chap2 VonNeumann.pdf

Composant 2 : Unité d’E/S

19

• Module entre l’unité centrale et les dispositifs périphériques d’E/S.

• Son rôle : échange d’information: Communiquer et interagir avec le monde extérieur via un écran, clavier, imprimante… (peut être dans les deux sens : lecture/écriture des informations depuis ou vers les périphériques, ou échange dans un seul sens , suivant le périphérique utilisé)

• Module interfacé (interrogé) via:

o Registre de sélection du périphérique (RS) : mémorise l’@ du périphérique avec lequel communiquer les données.

o Registre d’échange (RE), intermédiaire pour l’échange de données entre le périphérique désigné et la sortie de l’unité centrale.

RE RS

Page 20: Chap2 VonNeumann.pdf

Composant 3 : Bus

20

• Les échanges d’informations à différents niveaux passent par un bus partagé dit bus système.

• Un bus est un ensemble de lignes (chemin conducteur) qui transportent l’information.

• Il existe des bus : – Entre systèmes autonomes (ex ordinateur- retroprojecteur) : passage par des ''fils'' ou câbles. – Entre composants (ex. Bus système) : passage par des pistes sur circuit imprimé. – A l'intérieur d'un composant (ex. registres<-> UAL): passage sur des pistes métalliques ''gravées'' sur le support silicium

Page 21: Chap2 VonNeumann.pdf

Composant 3 : Bus

21

• Un bus transportant des 0 et des 1 peut être:

Bus parallèle est constitué de groupes de lignes permettant l'envoi de mots binaires complets en une seule étape. Les données d'un mot binaire sont envoyées simultanément (sur plusieurs lignes)

Bus série: Les données d'un mot binaire (les 0 et les 1) sont envoyées

successivement (synchronisées par l’horloge: temps) sur un nombre de lignes de transmissions restreints.

ex.

Page 22: Chap2 VonNeumann.pdf

Composant 3 : Bus

22

Le bus système désigne un bus parallèle au cœur de l'ordinateur qui fait circuler 3 types d'informations sur 3 groupes de fils: – Les lignes de données permettent d‘échanger du contenu mémoire: bidirectionnelles (par exemple entre les registres du processeur et la mémoire principale et vice versa) – Les lignes d'adresse identifient la case mémoire concernée – Les lignes de contrôle signalent le type d'opération à effectuer(read/ write..) et coordonnent les échanges (synchronisation…)

Page 23: Chap2 VonNeumann.pdf

Composant 3 : Bus

23

Exemple: de bus système entre processeur et mémoire :

Page 24: Chap2 VonNeumann.pdf

Composant 3 : Bus

24

Exemple: Une instruction exige au processeur de récupérer la valeur d’une case mémoire désignée par l’adresse 0x2E00001C et la mettre dans un registre interne du processeur. => Comment procède le processeur? : Le processeur envoie l’adresse hexadécimale 0x2E00001C

(qui peut être convertie en binaire) sur les lignes d'adresse. Il met le bit de contrôle RD/WR à 1 (pour dire qu’il s’agit

d’une opération de ReaD : lecture) et la ligne de contrôle ENABLE à 0 (pour activer le module mémoire)

La mémoire cherche la donnée contenue à cette adresse et envoie sa valeur (sur 32bits) sur les lignes de données.

La mémoire fait passer le bit de contrôle ACK de 1 à 0 pour signaler au processeur que l'information est disponible sur les lignes de données

Page 25: Chap2 VonNeumann.pdf

Composant 4 : Processeur (1)

25

Comme mentionné auparavant, le processeur est composé de : • UAL: Unité arithmétique et logique qui effectue les

opérations demandés par le programme procédant opération (=instruction) par instruction : fait l’action désirée (traitement: calcul ) sur les données et retourne le résultat attendu.

• UC: Unité de Commande qui sert à séquencer les opérations et coordonner avec toutes les entités de l’ordinateur pour veiller au bon déroulement des instructions: chef d’orchestre.

• Registres: des petites mémoires rapides servant à stocker des informations utiles pour le déroulement de l’instruction, les données utilisées par le programme transférés à partir de la mémoire ou des périphériques d’E/S.

Page 26: Chap2 VonNeumann.pdf

Composant 4 : Processeur (2)

26

Vue simplifiée du processeur:

Page 27: Chap2 VonNeumann.pdf

Composant 4 : Processeur (3)

27

Vue plus détaillée du processeur:

Page 28: Chap2 VonNeumann.pdf

Composant 4 : Processeur (4)

28

Description des éléments du processeur: Au départ, on rappelle que le programme qu’on veut exécuter est

une suite d’instructions qui sont stockées une à une dans la mémoire.

Comment savoir quelle instruction extraire? l’unité de commande, possède un registre dit IP: Instruction

pointer, dit Program counter PC et aussi compteur ordinal CO, qui contient à chaque fois l’adresse de la prochaine instruction à exécuter.

Une fois l’instruction à exécuter reconnue, son code est transféré vers un registre spécifique dit IR: Instruction register = registre d’instruction.

Résumé: Une nouvelle instruction est chargée depuis la mémoire, à l'adresse indiquée par le pointeur instruction (IP), vers le registre d'instruction (IR)

Page 29: Chap2 VonNeumann.pdf

Composant 4 : Processeur (5)

29

Description des éléments du processeur (suite): A partir du code de l’instruction, Le circuit décodeur sépare les

différentes informations du code de l'instruction qui sont: – Quel est le type d'instruction ? – Quels sont les registres concernés ? Le décodeur informe le séquenceur qui émet à partir de ces informations l'enchainement de signaux qui réalise l'action au niveau registres (ex: transfert de données depuis la mémoire ou un périphériqueE/S..), bus (récolter les @ (bus adresse), valeurs des données (bus de données) , UAL (effectuer l’action de l’opération exemple: addition, ET, comparaison)...

L’UAL, après exécution de l’action, retourne le résultat et modifie le registre Flags de codes conditions qui est un ensemble de bits résumant l'issue de la dernière opération de calcul ou de comparaison

Page 30: Chap2 VonNeumann.pdf

Composant 4 : Processeur (6)

30

Bus de données: La largeur du bus de données (sur combien de bits s’écrit la donnée) est souvent la même que la largeur des registres internes. Les systèmes courants sont ainsi qualifiés de: ● 8 bits : aujourd'hui réservés aux microcontrôleurs pour des applications embarquées légères ● 16 bits : applications embarquées, systémes anciens ● 32 bits : applications embarquées évoluées (smarts...) , génération précédente de micro-ordinateurs ● 64 bits : génération actuelle de micro-ordinateurs ● 128 bits : systèmes dédiés (processeurs graphiques) ou applications hautes performances (calcul scientifique)

Page 31: Chap2 VonNeumann.pdf

Architecture générale

31

Page 32: Chap2 VonNeumann.pdf

Les instructions (1)

32

Types d’instructions: Il existe 3 catégories principales d'instructions : Transferts de données -Entre registre et mémoire ou E/S -Entre registres Opérations arithmétiques ou logiques effectuées au niveau UAL -Arithmétique entière usuelle a 2 opérandes -Opérateurs booléens NON, ET, OU, décalages -Comparaisons Modification du déroulement de la séquence -Branchements non conditionnels -Branchements conditionnels : choix de séquence en fonction du résultat d'une opération (CCR) -Appels de sous programmes et retours appelant

Page 33: Chap2 VonNeumann.pdf

Les instructions(2)

33

Jeu d’instructions:

L'association entre le code de l'instruction et les actions effectuées par le processeur est déterminée par le schéma de câblage du décodeur et du séquenceur ● C'est le niveau du passage du logiciel (instructions sous formes d'informations) au matériel (actions effectives), on dit que les instructions sont exécutées. Exemple de codage binaire d'une instruction sur processeur type Intel (x86):

Page 34: Chap2 VonNeumann.pdf

Instructions (3)

34

Jeu d’instructions: Chaque type de processeur possède son propre système d'associations entre codes d'instructions et actions effectives • Cet ensemble dépend aussi du nombre et de la largeur des registres,

des opérations possibles ...

• L'ensemble des instructions qu'un type de processeur peut exécuter s'appelle le jeu d'instructions (instruction set)

➔ C'est le ''vocabulaire'' du processeur • C’est le concepteur du μprocesseur qui définit – Registres, chemins de donnees (Bus) – Actions possibles (calculs, copies, acces bus...) – Codage instructions → actions – La liste des instructions (jeu d'instruction) possibles sur ces dispositifs matériels

Page 35: Chap2 VonNeumann.pdf

Niveaux de programmation (1)

35

• Le code exécuté par un processeur peut être qualifié de langage machine

• A un niveau fondamental il s'agit de mots binaires (souvent 2, 3 ou 4 octets) respectant un ensemble de conventions directement exploitables par les circuits logiques du décodeur et du séquenceur...

• Programmer en langage machine revient à remplir une file d'octets avec des nombres qui correspondent à des instructions (futures

actions du processeur). Une 1ère étape historique en programmation a été d'écrire (en

langage machine) des programmes capables de transformer un code lisible, utilisant des symboles et des mnémoniques, en code exécutable

Un tel programme est appelé assembleur Le langage utilisé est également appelé langage assembleur ou juste

"assembleur« Il s'agit essentiellement d'une transformation directe syntaxique

(tables de correspondance)

Page 36: Chap2 VonNeumann.pdf

Niveaux de programmation (2)

36

Page 37: Chap2 VonNeumann.pdf

Niveaux de programmation (3)

37

• Une 2ème étape historique en programmation a été d'écrire (en

assembleur) des programmes capables de transformer un code structuré doté d'abstraction, en code assembleur. Le code assembleur étant ensuite assemblé en exécutable

• Il s'agit d'une transformation complexe impliquant un niveau d'analyse grammaticale

• De tels programmes sont des compilateurs pour des langages dits de

haut niveau tels que le C ou le C++)

Page 38: Chap2 VonNeumann.pdf

Niveaux de programmation (4)

38

Le langage de haut niveau compilé en assembleur est ensuite assemblé en exécutable.

Page 39: Chap2 VonNeumann.pdf

Niveaux de programmation (5)

39

Principe d’un langage compilé (1):

Page 40: Chap2 VonNeumann.pdf

Niveaux de programmation (6)

40

Principe d’un langage compilé (2):