SMB137 - Première partie - Historique et principes de base

publicité
SMB137 - Première partie
Historique et principes de base
Rémi LEBLOND
http://remileblond.fr/category/cnam/smb137/
CNAM Grand-Est
http://www.cnam-grandest.fr/
15 mars 2017
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Plan
1
Historique - Grandes familles de systèmes
2
Architecture des ordinateurs
3
Environnement de développement et conception modulaire
2/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Qu’est-ce qu’un système informatique ?
Definition
Ensemble constitué d’un ou de plusieurs ordinateurs, de périphériques et
de logiciels, et qui assure le traitement des données.
[AFNOR]
But :
Traiter des données (exécuter des programmes)
3/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Les calculateurs mécaniques
Machine de Pascal (1642) :
Entièrement mécanique
Additions et des soustractions.
Machine de Gottfried Wilhelm (1672) :
Multiplications et des divisions
Charles Babbage (1792 - 1871) : la machine analytique
Quatre éléments : Le magasin → la mémoire
Le moulin → unité de calcul
L’entrée
→ lecteur de carte
La sortie → impression par perforation
Exécution d’algorithmes simples décrits sur carte perforée
Très (trop 1 ) complexe, mais visionnaire. A vapeur !
1. Terminée après sa mort, par un de ses fils, en 1910.
6/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
La machine analytique de Babbage
Figure: Prototype (1871) non terminé de la machine analytique de Babbage,
exposée au Science Museum de Londres [8].
7/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
La machine analytique de Babbage
Figure: La machine de Babbage terminée, avec son dispositif d’impression et sa
manivelle d’entrainement
8/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Systèmes basés sur des relais électromécaniques
Z1 (1938), Z2 et Z3 (1941) : Konrad ZUSE [7]
Premier calculateur binaire 2 à virgule flottante
Electro-mécanique : 2 600 relais de téléphone, film perforé
Multiplication : 5 secondes
Premier langage de haut niveau (Plankalkül) → implémenté en 2000 !
Détruit par les bombardements alliés. Déclinaisons militaires S1 et S2
(aéronautique et balistique) → URSS ?
Logique purement commerciale
Mark1 (1944) : Howard AIKEN pour IBM
760 000 pièces électromécaniques
Multiplication de deux nombres de 23 chiffres en 6 secondes
3
Addition, soustraction : 10
seconde
Obsolète avant même son achèvement
2. Première implémentation de l’algèbre Booléenne.
9/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Systèmes basés sur des tubes à vide
Colossus (1943) : Alan TURING
Services secrets britanniques
Premier calculateur électronique numérique
Décryptage des messages (Enigma)
Secret défense durant 30 ans → impasse scientifique)
ENIAC (1946) : ECKERT et MAUCHLY
Tables d’ajustement des tirs d’artillerie
18 000 tubes, 30 tonnes, 1 500 relais, 6 000 commutateurs, 160 m2 ,
140 KW
Fin guerre :
exploitation scientifique
base de travail scientifique (John VON NEUMANN)
10/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Qu’est qu’un programme ?
Definition
Un programme correspond à une séquence d’instructions décrivant la
façon dont une tâche doit être effectuée. [2]
Décomposé en opérations élémentaires, pouvant être exécutées par
les circuits de l’ordinateur :
Additionner deux nombres
Tester si un nombre est égal à zéro
Copier une donnée d’un emplacement mémoire à un autre
11/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Programmation des premiers systèmes
Modules de traitement
Inverseurs
Additionneurs
Portes logiques
...
Câbles de liaison
Programmation
Assemblage de modules
Câblage
Programmation par fiches et interrupteurs
Action directe sur le matériel
12/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
ENIAC - 1946
13/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Les premiers programmes autonomes
14/165
Perforateur
de carte
Lecteur de
carte
Ordinateur
Imprimante
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
L’ENIAC en 1957
15/165
Bilan d’une année de production
7 247 heures de fonctionnement
3 491 heures en production
1 061 heures en ”problèmes”
196 heures d’inactivité
651 heures d’interventions planifiées
1 848 heures d’interventions non planifiées
remplacement de tubes
...
19 000 tubes remplacés
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
L’héritage des premiers systèmes
16/165
Des systèmes complexes
lents
coûteux
complexe à utiliser
peu fiable
ressources sous-utilisées
Reproductibilité des traitements
Base pour d’importants travaux de recherche
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Les premiers systèmes
Avantages
Reproductibilité des
traitements
Vitesse de calcul (relative)
Base de travail scientifique
17/165
Inconvénients
Faible débit
Matériel sous utilisé
Délais de manipulation des
cartes
Pas de langage de
commande
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
La machine de Turing [17]
18/165
Alan Mathison Turing (23 juin 1912 - 7 juin 1954)
Mathématicien, cryptologue et informaticien britannique
1936 : article de logique mathématique
problème de Hilbert dans les théories axiomatiques, le problème de la
décision
”être calculant” : appareil logique ou humain bien discipliné appliquant
des règles de calcul
fondements scientifiques de l’informatique.
Machine de Turing
expérience de pensée
concepts de programmation et de programme
formalisation des concepts d’algorithme et de calculabilité
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
La notion de logiciel [18]
Basée sur les travaux de John VON NEUMANN (1947)
Description des traitements en mémoire 6= directement dans le matériel
Chargement de la description des traitements en tant que données
Appareil informatique :
machine qui effectue des traitements en fonction d’instructions et de
données
Terme ”logiciel” créé en 1972
Traduction de software (par opposition au hardware)
Premiers langages de programmation
description de traitements : enchaı̂nement d’instructions
19/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Utilisation du transistor (1955-1965)
20/165
Laboratoires Bell 1948
Remplacement des tubes à vide
Ordinateurs plus petits, fiables et performants
Mini-ordinateurs :
Relativement bon marché
PDP-1 de DEC
IBM, HP, Data Général
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Le circuit intégré (1965-)
21/165
Intégration de plusieurs transistors sur un même circuit
miniaturisation
augmentation de la puissance
Chute des prix
Taux d’intégration en constante augmentation
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Les systèmes de traitement par lots
Definition
En informatique, un traitement par lots (batch processing) est un
enchaı̂nement automatique de commandes sans intervention d’un
opérateur.
23/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Les systèmes de traitement par lots
Progrès du matériel
Mémoires
Transistors, puis circuits
intégrés
Périphériques
lecteurs/perforateurs de
cartes et de rubans
imprimantes
tambours
bandes magnétiques
24/165
Progrès du logiciel
Assembleur
Langages évolués :
FORTRAN (1957)
ALGOL (1960). . .
Moniteur d’enchaı̂nement
résident
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Les systèmes de traitement par lots
25/165
Système d’exploitation simple
Moniteur d’enchaı̂nement résident
OS/360 d’IBM
Pas d’interaction directe utilisateur/système
Entrée : Lecteurs de carte/bande
Sortie : Perforateurs, bandes, imprimantes
Regroupement des tâches en lots
Suite de cartes
Exécution différée
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Moniteur d’enchaı̂nement (1955)
Travail, étapes
26/165
Traducteur
Compilateur
Moniteur
Lecteur de
carte
Ordinateur
Imprimante
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Session de travail typique (JCL)
27/165
Cartes de contrôle : renseignements sur les travaux
Carte de début de travail ($JOB)
Carte de début de compilation ($LOAD)
Cartes du source
Carte de fin de compilation
Carte de début d’exécution ($RUN)
Cartes de données
Carte de fin d’exécution
Carte de fin de travail
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
La problématique de l’attente des E/S
Perte de cycles CPU
28/165
CPU inactive
CPU
Lecteur
de cartes
Exécution
Exécution
Lecture de données
(E/S)
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Ordinateur auxiliaire (1960)
Moniteur
Ordinateur
Lot de
résultat
Transport
manuel
29/165
Traducteurs
Lot de
programmes
Ordinateur
auxiliaire
Carte travail
Imprimante
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Les systèmes de traitement par lot
Avantages
Utilisation de langages de
commande évolués
Préparation des travaux
indépendante de
l’exploitation
Débit amélioré (meilleure
utilisation du matériel)
30/165
Inconvénients
Pas d’interaction directe
utilisateur/système
Monoprogrammation
processeurs souvent
inactif
Temps de réponse augmenté
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Exemple : Univac 1
UNIVersal Automate
Computer
Lancé en 1951
48 exemplaires
4 millions d’Euro
125 kW
48 kO de mémoire
1900 opérations par seconde
31/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Les systèmes multiprogrammés
Definition
Se dit d’un système à multiprogrammation, c’est à dire capable de faire
tourner plusieurs programmes en même temps.
Permet d’occuper le processeur pendant les phases d’E/S
Taux de multiprogrammation :
nombre de programmes actifs simultanément
33/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Evolution technologique
Progrès du matériel
Amélioration des
périphériques
Processeurs dédiés aux
entrées-sorties
E/S tamponnées
Organisation de la mémoire
mémoire virtuelle
pagination
34/165
Progrès du logiciel
Entrées-sorties en mode
différé
spool
Exécution parallèle
d’entrée-sortie et d’activités
d’exécution
E/S tamponnée
Moniteur plus évolué
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
E/S tamponnées
35/165
Lecteur de
cartes
Moniteur
Gestion
des E/S
Imprimante
Ordinateur
Travaux
Résultats
Files d’attente
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Principes des systèmes multiprogrammés
36/165
Plusieurs travaux en mémoire
Chaque travail utilise la CPU jusqu’à être interrompu par une E/S
Exécution exclusive de chaque travail
Ordonnancement des travaux par le moniteur
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
E/S tamponnées
37/165
Lecteur de
cartes
Moniteur
Gestion
des E/S
Imprimante
Ordinateur
T1
T2
T3
T4
Travaux
Résultats
Files d ’attente
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Traitement des E/S
Optimisation de l’utilisation de la CPU
Liste d’attente :
38/165
•Travail 1
•Travail 2
CPU
Lecteur
de cartes
Changement de contexte
Travail 1
Demande
d’E/S
Travail 2
Lecture 1
(E/S)
Travail 1
Fin
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Les systèmes multiprogrammés
Avantages
Meilleure utilisation du
processeur
meilleur débit
Efficace pour les travaux
courts
bon temps de réponse
Protection du moniteur
superviseur des
entrées/sorties
39/165
Inconvénients
Partage des ressources
mémoire centrale
CPU
E/S...
changement de contexte
après chaque interruption
Temps de réponse variables
Risque de pénurie
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Les systèmes à temps partagé
Definition
Technique d’exploitation d’un système informatique qui assure l’imbrication
dans le temps de plusieurs processus dans un même processeur [AFNOR]
40/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Les systèmes à temps partagé
41/165
Introduit en 1965
Extension de la multiprogrammation
Commutations fréquentes
Utilisation d’une horloge
Quantum de temps
Interruption des travaux par le système
Illusion de traitement multi-tâches
Interaction avec l’utilisateur
Utilisation de terminaux
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Enchaı̂nement de tâche dans un système à temps partagé
Optimisation des temps de réponse
Liste d’attente :
42/165
•Travail 1
•Travail 2
CPU
Lecteur
de cartes
Changement de contexte
Travail 1
Travail 2
Lecture 1
(E/S)
Travail 1
Quantum
de temps
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Travail 2
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Les systèmes à temps partagé
Avantages
Meilleur temps de réponse
délai d’attente plus court
Interaction utilisateur
Illusion multi-tâches
43/165
Inconvénients
Complexité
Pas réellement multi-tâches
Perte d’efficacité
changements de contexte
fréquents
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Le micro-processeur
44/165
Intégration de tous les éléments d’un processeur dans un unique
circuit intégré
Premier microprocesseur :
Intel 4004 en 1971
unité de calcul de 4 bits, cadencé à 108 kHz
Très complexe à mettre au point, bon marché (200 dollars)
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Loi de Moore (1965)
Basée sur des observations empiriques (article de 1965, réévalué en 1975)
Doublement du nombre de transistors intégrés dans une puce tous les
18 mois (12 mois initialement)
Vérifiée pendant 40 ans
Bornée aux limites physiques
pratiquement atteintes aujourd’hui
problématiques de l’enveloppe thermique et de l’efficacité énergétique
nécessite de nouvelles techniques de gravure (finesse extrême, circuits
3D 3 ... )
3. FinFet 14nm, chez AMD, par exemple.
45/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Loi de Moore (1965)
46/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Les systèmes parallèles
48/165
Utilisation de plusieurs processeurs
processeurs courants
moins coûteux que les processeurs spécifiques
mémoire partagée ou répartie
même bus de données
Utilisation de processeurs multi-cœurs (multicores)
intégrés dans un seul circuit
tendance récente en cours de généralisation
performances liées à la topologie d’interconnexion des cœurs
Partage des travaux - exécution simultanée
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Deux familles de systèmes parallèles
Symétriques (SMP)
49/165
Asymétriques (AMP)
Plusieurs processeurs égaux
Un processeur pilote
Les processeurs exécutent
tous une copie du système
Attribue les travaux aux
autres
Partage collaboratif des
travaux
Possibilité spécialisation de
processeurs
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Systèmes parallèles
Avantages
Scalabilité
Possibilité d’augmenter la
puissance au besoin
Efficacité
Coût raisonnable
Réellement multi-tâches
Fiabilité
Tolérances aux pannes
(dans le cas du SMP)
50/165
Inconvénients
Équilibrage de charge entre
les processeurs
Difficulté de gestion des
files d’attente
Concurrence d’accès aux
ressources
Manque de souplesse
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Machine à bus unique - Mémoire centralisée
Machine à bus unique Mémoire centralisée
51/165
Processeur
Processeur
Processeur
Cache
Cache
Cache
Bus de communication
Mémoire
E/S
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Mémoire distribuée
Machine à bus unique Mémoire distribuée (NUMA)
52/165
Processeur
Processeur
Processeur
Cache
Cache
Cache
Mémoire
Mémoire
Mémoire
Bus de communication
E/S
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Taxinomie de Flynn [16]
Classification architectures d’ordinateur - Michael J. Flynn (1966)
SISD Ordinateur séquentiel, aucun parallélisme
SIMD Parallélisme au niveau de la mémoire (processeur vectoriel)
MISD Même donnée traitée par plusieurs processeurs en parallèle. Usage
spécialisé (filtrage numérique, vérification de redondance dans les
systèmes critiques...)
MIMD Ordinateur parallèle : plusieurs processeurs traitent des données
distinctes
MIMD à mémoire partagée. Espace d’adressage global. Communication
inter-CPU via la mémoire globale.
MIMD à mémoire distribuée. Chaque CPU a sa propre mémoire et son
propre système d’exploitation.
Middleware pour la synchronisation et la communication.
53/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Les systèmes distribués
54/165
Tous les processeurs ne partagent pas le même bus de données et la
même mémoire
communication via un réseau
Partage de ressources sur un réseau
grappe de calcul
cluster
Plusieurs ordinateurs qui collaborent
mêmes mécanismes que pour les systèmes parallèles
problématique des délais de propagation des informations
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Les systèmes distribués
Avantages
Réellement multi-tâches
Tolérance aux pannes
Souplesse, évolutivité
Scalabilité
55/165
Inconvénients
Délais de propagation des
modifications de données
Équilibrage de charge entre
les ordinateurs connectés
Complexité
Administration
Optimisation
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Clusters scientifiques : HPC
High-Performance Computing
x 1000 tous les 11 ans :
1964 → mégaFLOPS : Control Data 6600
1985 → gigaFLOPS : Cray-2
1997 → téraFLOPS : ASCI Red
2008 → pétaFLOPS : Roadrunner
...éxaFLOPS pour les supercalculateurs de 2020 ?
Record actuel 4 :
Réseau de minage Bitcoin = 3 750 éxaFLOPS
Tianhe 2 (défense chinoise) : 32 000 Xeon Ivy Bridge + 48 000 Xeon
Phi = 33,86 petaflops
Un PC de 2013 :
CPU Intel Core i7-3770 → 200 gigaFLOPS
GPU NVidia GTX 690 → 5 621 gigaFLOPS (record de 2001)
4. 2015
56/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Botnet [11] : réseau de bots informatiques
Bot :
Agent logiciel (semi)automatique connecté à Internet
Communique avec d’autres programmes similaires
robots IRC, machines zombies...
Effectuent des tâches bien identifiées
spam, DoS, cassage de clefs de cryptage...
Grosse capacité de traitement :
Entre 4 000 et 5 000 botnets actifs février 2012
13 million de machines pour le plus gros botnet identifié 5
Location à l’usage
Source : Verisign 2010 (iDefense Intelligence Operations Team)
9$ l’heure ou 67$ les 24h, en moyenne
5. En 2013
57/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
IaaS : Infrastructure as a service [14]
Infrastructure as a service (IaaS) :
ressources informatiques (CPU, stockage, réseau... )
capacité de traitement
ressources de stockage...
Fondement du Cloud Computing[12] pour les infrastructures :
58/165
Ressources en self-service, adaptation à la demande
Ouverture, via interfaces standardisées
Mutualisation et présentation des ressources sous la forme d’un
système virtuel unique (grilles informatiques)
Paiement à l’usage : mesure et facturation des ressources consommées
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
IaaS : Infrastructure as a service
Exemples
59/165
Amazon EC2 (Elastic Compute Cloud)
lancé en 2006, encore largement leader du marché
plusieurs dizaines de milliers de serveurs répartis dans le monde
0,45 $ / heure de traitement (4 vCPU, 15 Go RAM, 1,77 To)
Google Cloud Compute Engine
Lancé en juin 2012
Microsoft Windows Azure
Lancé en juin 2012
Numergy :
Cloud français a basé sur OpenStack (open source), récement repris
intégralement par SFR
a. Caisse des Dépôts, Bull et SFR
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Les systèmes temps réel
Definition
Un système temps réel se compose d’un système ou d’une application
devant répondre en un temps fini et spécifié à des stimulis générés par le
monde extérieur
61/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Les systèmes temps réel
Prise en compte de contraintes de temps
déterministe
temps de réponse garantis
Deux familles
système temps réel souple
système temps réel rigide
Exemples
Souple : multimédia
Rigide : contrôle de robots industriels
62/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Types de tâches gérées
63/165
Tâches temps réel critiques :
Respect absolu des échéances prévues
Tâches temps réel non-critiques :
Peuvent répondre avec un certain retard sachant que la cohérence du
système en sera dégradée
Tâches sans contraintes temps réel :
Répondre au mieux
Doit pouvoir être interrompu à tout moment
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Modes de fonctionnement
On distingue :
65/165
Mode différé
Mode interactif
Transactionnel
Machine à usage exclusif
Temps partagé
Mode temps réel
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Temps de traitement, de rotation
Durée totale de traitement d’un travail
Temps entre prise en charge d’un travail et réception de la totalité des
résultats
Importance relative
Différé
Interactif
Temps réel
66/165
Long, souvent borné
Bref, imprévisible (sauf en transactionnel)
Très bref, connu
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Délai d’attente (temps de latence)
Délai entre l’envoi d’une commande et le début de l’exécution
Importance relative
Différé
Interactif
Temps réel
67/165
Non représentatif
Important pour l’interactivité
Très bref, 1er critère de jugement
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Temps de réponse
Délai entre l’envoi d’une commande et le début de la réponse
Importance relative
Différé
Interactif
Temps réel
68/165
Non représentatif
1er critère de jugement
Connu, imposé
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Les critères d’évaluation des performances d’un système
informatique
Envoi d’une
commande
69/165
Résultats
Délai d’attente
Temps de réponse
Temps de
traitement
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les premiers systèmes
Les systèmes de traitement par lots
Les systèmes multiprogrammés / à temps partagé
Les systèmes parallèles / distribués
Les systèmes temps réel
Evaluation des performances
Débit
Nombre de commandes exécutées par unité de temps
Mesure l’efficacité et la rentabilité du système
Importance relative
Différé
Interactif
Temps réel
70/165
Critère de jugement
Non représentatif
Non représentatif
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Architecture Von Neumann
73/165
Invention du logiciel (software)
Mis au point sur l’UNIVAC en 1947
Mémoire banalisée :
Contient indifféremment données et instructions
Pas de distinction entre programme et données
Possibilité d’intervenir sur le programme en cours de traitement
Registres processeur spécialisés :
Instructions
Données
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
L’architecture Von Neumann de nos jours
Aujourd’hui
Tous les processeurs communs sont des machines à programme enregistré
de Von Neumann
Constat :
importante évolution de la forme et des performances
très faible évolution de la conception de base
Limites physiques : taille critique des circuits
électromigration
courant de fuite
Successeurs encore à l’étude
ordinateur quantique : pas encore fonctionnel
palliatif : architectures parallèles
74/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Les trois blocs fonctionnels
75/165
Processeur (CPU)
Réalise les traitements décrits par les instructions
Mémoire
Stocke les informations
Données ou instructions
Bus de communication
Echanges entre CPU et mémoire
Echanges avec le reste du système (périphériques)
Utilisation de “mots”
CPU
Mémoire
BUS
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Composition d’un processeur
ALU Unité Arithmétique et Logique. Prend en charge les calculs
arithmétiques élémentaires et les tests [4]
UC Unité de contrôle ou séquenceur. Permet de synchroniser les différents
éléments du processeur
gistres Mémoires de petite taille (quelques octets), suffisamment rapides pour
que l’UAL puisse manipuler leur contenu à chaque cycle de l’horloge
Horloge Synchronise toutes les actions de l’unité centrale (processeurs
synchrones)
té E/S Prend en charge la communication avec
la mémoire de l’ordinateur
les périphériques de l’ordinateur
76/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
L’architecture Von Neumann
77/165
Unité d’E/S
Mémoire
centrale
Unité arithmétique
et logique
(ALU)
Unité centrale
de traitement (CPU)
Bus système
Unité de contrôle (UC)
Périphériques
Contrôleur de
périphériques
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Le rôle du processeur (CPU)
78/165
Traiter les instructions :
Exécuter les instructions
Réalise des traitements séquentiels
Manipuler les données
Lire séquentiellement des instructions pointées dans la mémoire par le
compteur ordinal (CO)
Lire éventuellement les opérandes stockées dans la mémoire
Placer éventuellement en mémoire le résultat du traitement
Communiquer avec les périphériques et le monde extérieur
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Déroulement d’un programme
79/165
Le processeur exécute des instructions élémentaires
En séquence sauf en cas de saut
Contrôlé par le Compteur Ordinal (CO)
Prochaine instruction à exécuter
Certaines instructions peuvent modifier directement le CO (saut)
Instructions amenées une à une vers le processeur
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Séquencement des instructions
80/165
Instruction composée de plusieurs étapes
Micro-instructions
Type d’action :
Activité mémoire
Activité processeur
Cycle processeur
Phase de chargement → fetch
Phase d’exécution → exec
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Séquencement des instructions
81/165
Phase de
chargement
(fetch)
Phase
d’exécution
(exec)
Fin
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Séquencement des instructions (Von Neumann)
Prise en compte des instructions en cinq étapes :
IF 6 Lecture de l’instruction depuis la mémoire
ID 7 Décodage de l’instruction et recherche des opérandes (registre ou
valeurs immédiate)
EX Exécution de l’instruction (EXexute)
MEM Accès mémoire, écriture dans la mémoire si nécessaire ou chargement
depuis la mémoire - facultatif
WB 8 Ecriture de la valeur calculée dans les registres
82/165
6. Instruction Fetch
7. Instruction Decoding
8. Write Back
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Exécution d’un programme
83/165
Demander une instruction
CO = CO + 1
Décoder l'instruction
Rechercher les opérandes
Exécuter l'instruction
Ranger le résultat
Par le biais du compteur
ordinal
Par l'Unité de Contrôle
En mémoire ou registres
Par L’ALU
En mémoire ou dans
un registre
Chargement
Exécution
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Alternative : architecture Harvard [5]
Mise en œuvre par l’Université de Harvard pour
le Mark I (1944)
Différences avec l’architecture Von Neumann :
Spécialisation de la mémoire entre données et
instructions
Transferts simultanés, en parallèle
Gain de performance, mais plus grande
complexité
Mise en œuvre
processeurs numériques de signal (DSP) ;
microcontrôleurs (PIC de Microchip, AVR d’Atmel).
84/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Fonctionnement subscalaire
86/165
Forme la plus simple que peut prendre un CPU
Une seule instruction n’est exécutée à la fois
Composantes du CPU sous utilisés :
Il faut 15 cycles pour exécuter trois instructions
Figure: Extrait de [4]
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Fonctionnement superscalaire
Objectif
Comportement moins linéaire et plus parallèle du CPU
Optimisation des capacités d’exécution
Utilisation d’un pipeline d’instructions
Parallélisme de processeur :
Instruction Level Parallelism (ILP)
Parallélisme au niveau instruction
Thread Level Parallelism (TLP)
Parallélisme au niveau thread (groupe d’instructions)
87/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Fonctionnement superscalaire ILP
Principe du travail à la chaine
Améliorer l’utilisation des ressources d’exécution
Un pipeline de base à 5 étages 9 peut soutenir un taux d’exécution d’une
instruction par cycle. [4]
88/165
9. Comme celui de l’Intel 486
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Fonctionnement superscalaire TLP
89/165
Capacité d’exécuter plusieurs programmes simultanément
Multithreading processeur
Comportement équivalent à un système multi-processeurs
Optimisation de l’usage des unités d’exécution (ALU)
Duplication de certaines parties du CPU (le moins possible) :
la recherche → fetch
le décodage → decode
la répartition des instructions → dispatch
les registres non spécialisés.
Mis en œuvre dès 1950
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Fonctionnement superscalaire TLP
En recherchant et affectant deux instructions à la fois, le CPU peut
exécuter un maximum de deux instructions par cycle [4]
90/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Composition d’un système informatique moderne
Unité
Centrale
Bus système
92/165
Contrôleur
de disques
Contrôleur
d’imprimante
Contrôleur
d’unités de bande
Contrôleur
mémoire
Mémoire centrale
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Séquence de démarrage
Prise en charge par le programme d’amorçage :
Initialisation du matériel
93/165
registres du processeur,
contrôleurs de périphériques,
mémoire...
Chargement du système d’exploitation
exécution des premiers processus (initialisation)
Attente d’un évènement...
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Séquence de démarrage
Prise en charge par le programme d’amorçage
BIOS : Basic Input Output System [6]
mis en place pour les premiers PC
limité (accès mémoire, partiellement 16 bits, pas d’accès réseau...) et
difficilement portable
inadapté aux architectures 64 bits et aux besoins de télégestion
UEFI : Unified Extensible Firmware Interface [9] - Intel
onterface micrologicielle extensible unifiée (modulaire et interaction
possible avec l’OS)
fonctionnalités réseau intégrées en standard
écrit en C, plus portable et maintenable : Itanium (IA-64), x86 (32bits
et 64bits) et ARM
94/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Évènements et interruptions
Signalés par une interruption :
Matérielle
envoyée par un contrôleur de périphérique
utilise le bus système
peut être masquée 10 ou invalidée
Logicielle
semblables aux interruptions matérielles
émises par des programmes
ne peut être ni invalidé ni masquée
10. interruptions masquables
95/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Exemples d’interruptions
Interruptions materielles
Erreur
accès mémoire incorrect
E/S
fond de lecture ou
d’écriture sur disque
Interaction utilisateur
frappe clavier
déplacement souris
CTRL + ALT + SUPPR
Interruptions logicielles
Lecture de l’horloge temps
réel
Appel au superviseur (appel
système)
Demande d’E/S
Division par zéro
Horloge
...
96/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Traitement d’une interruption
Traités par une routine système :
97/165
Arrêt travail en cours
Transfert de l’exécution sur la routine de traitement (emplacement
fixe)
qualification de l’interruption
traitement
Transfert de l’exécution sur le dispatcher
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Les interruptions
98/165
Partie importante de l’architecture d’un ordinateur
doivent être traitées très rapidement
Nombre prédéfini d’interruptions possibles
Table de pointeurs vers des routines de traitement
vecteur d’interruption
généralement stockée au tout début de la mémoire de l’ordinateur, en
0000 : 0000
Pas de routine intermédiaire
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Appel indirect de routine de traitement d’interruption
99/165
Vecteur d’interruption
Adresse
routine
1
a
2
b
3
c
N° IRQ
Évènement IRQ 3
Routine de
traitement
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Influence sur la structure du système
100/165
Systèmes modernes dits dirigés par les interruptions
Influence la structure générale d’un système d’exploitation
Chaque type d’interruption est traité par une partie du système
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Les différents niveaux de bus
Sur les premiers systèmes :
Un bus unique
101/165
connexion de tous les composants
mémoire, dispositifs d’E/S...
Priorité des contrôleurs d’E/S sur le processeur
risque de perdre des informations
faible capacité de stockage au niveau du contrôleur
perte de cycle pour le processeur
vol de cycle (cycle stealing )
Acceptable tant que les performances des composants restent
homogènes
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Les différents niveaux de bus
102/165
Sur les systèmes actuels :
Grande disparité des performances
mémoire, disque, réseau, carte graphique...
Important débits d’E/S
Solution :
Bus plus rapide (stations de travail)
Problème de la rétro-compatibilité :
Assurer la compatibilité avec les anciens matériels (PS/2)
Plusieurs niveaux de bus, par ordre décroissant de performance
bus mémoire
bus PCI
bus ISA
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Les différents niveaux de bus
CPU
Scanner
SCSI
103/165
Bus mémoire
Front side bus
Disque
SCSI
Bus SCSI
Contrôleur
SCSI
Carte
son
Modem
Bus ISA
Contrôleur
PCI
Mémoire
principale
Bus PCI
Carte
graphique
Contrôleur
ISA
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Carte
réseau
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
ARM : bus CoreLink CCN-504
Bande passante de 1 To/s [1]
104/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Interruptions matérielles du x86 : modèle PIC
105/165
Programmable Interrupt Controler
15 interruptions matérielles : les IRQ, ou Interruption Request
Assignées au matériel :
le processeur, la mémoire, les cartes d’extension, les périphériques,
l’horloge, etc...
Quantité limitée
partage nécessaire
risque de conflits
Systématiquement associée à une interruption logicielle
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Interruptions matérielles du x86 : modèle PIC
106/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Les 15 interruptions matérielles du x86 (modèle PIC)
IRQ 0
IRQ 1
IRQ 3
IRQ 4
IRQ 5
IRQ 6
IRQ 7
IRQ 8
IRQ 9
IRQ 10
IRQ 11
IRQ 12
IRQ 13
IRQ 14
IRQ 15
107/165
System Timer
Clavier
COM2 (second port série)
COM1 (premier port série)
”disponible” (souvent utilisée pour la carte son)
Lecteur de disquettes (2 maximum)
LPT1 (le port parallèle)
Real Time Clock (horloge temps réel)
”disponible”
”disponible”
”disponible”
Souris PS/2
Coprocesseur arithmétique
Canal IDE primaire (2 maximum)
Canal IDE secondaire (2 maximum)
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Interruptions matérielles du x86 (modèle APIC)
108/165
Advanced Programmable Interrupt Controler
Géré par le BIOS
En complément du PIC standard
256 interruptions
Intègre les 16 du modèle PIC (liées à une IRQ)
Défini dans le vecteur d’interruption
Indispensable pour le SMP
Traitement individuel des CPU à interrompre
Imposé par Windows XP
même sur les machines mono-processeur
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Modèle APIC
109/165
Communication via le bus APIC
Bus logique
Local APIC
Propre à chaque processeur
Gère les interruptions locales pour le processeur local
IO-APIC
Redirige les interruptions
d’un APIC local vers un autre
vers un autre IO-APIC
Table de redirections
Plusieurs I/O APIC répartis dans le reste du système (PCI...)
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Les entrées - sorties
110/165
Matériel d’E/S
Scrutation
Les interruptions
Accès direct en mémoire
Périphériques
Gestion des requêtes d’E/S
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Les périphériques d’E/S
111/165
Périphériques connectés par un bus
Pilotés par un contrôleur
registres propres
mémoire tampon
pilote plusieurs périphériques de même type
responsable des déplacements entre périphériques et mémoire tampon
Capable de lever des interruptions
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
La scrutation d’E/S
Attente active
Teste constamment si l’E/S est réalisée
place des structures de contrôle en mémoire
observe leur contenu régulièrement
perte de cycles processeur
Transfert synchrone
112/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Interruption d’E/S
Contrôleur capable de lever des interruptions
Traitement d’une E/S :
L’UC charge les registres du contrôleur
Le contrôleur examine ses registres
Démarrage du transfert des données vers ou depuis les registres du
contrôleur
Information de l’UC de la fin du transfert
Transfert asynchrone
113/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Déroulement d’une E/S
E/S avec scrutation (attente active - mode synchrone)
Traitement A
Attente
Traitement A
Réalisation de l ’E/S
E/S avec interruption (attente passive - mode asynchrone)
Traitement A
114/165
Traitement B
Réalisation de l ’E/S
Traitement A
Interruption
d ’E/S
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Attente d’E/S
115/165
Attente active
Boucle d’attente
Attente interruption
Interrogation périphérique (drapeau)
Périphériques ne gérant pas les interruptions
Attente passive
Attente interruption
Instruction wait
Donne le contrôle à d’autres traitements
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
File d’attente d’E/S
116/165
Une file d’attente par groupement de périphérique
Possibilité de suivre plusieurs requêtes d’E/S simultanément
Permet de connaı̂tre :
Les périphériques disponibles
Leur adresse
Leur état (actif, inactif, indisponible)
La liste des travaux à traiter (file d’attente)
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Table de statut de périphérique
117/165
Table de statut
Clavier
État : inactif
Imprimante 2
État : actif
Disque 1
État : inactif
Disque 2
État : actif
Disque 3
État : indisponible
Files d’attente
Requête
Opération : Écriture
Adresse : 10753
Longueur : 1323
id demandeur : 125
Requête
Opération : Écriture
Adresse : 4657
Longueur : 458
id demandeur : 1284
Requête
Opération : Lecture
Adresse : 80974
Longueur : 1769
id demandeur : 1205
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Traitement d’une interruption d’E/S
118/165
Interruption par un périphérique
Identification du périphérique demandeur (table des périphériques)
Identification du travail (file d’attente)
Si le travail est terminé :
Passage au travail suivant
Changement état du programme demandeur
Changement éventuel de l’état du périphérique
Sinon :
Mise en place des directives pour la suite du travail
Lancement de l’E/S
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Cas d’une E/S non convoitée
Exemple : frappe en avance au clavier
Interruptions pour signaler l’arrivée de caractères
Aucun travail n’a requis de saisie clavier
Remplissage d’un tampon
Fourniture du contenu du tampon au prochain travail réclamant une
entrée clavier
119/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Structure DMA
Problèmes à résoudre
Lenteur des E/S face à la CPU
Interruption de l’UC pour chaque mot
Perte de cycles CPU
Solution proposée par DMA (Direct Memory Access)
Processeur dédié au suivi des E/S :
communication directe du contrôleur avec la mémoire sans interruption
de l’UC
traitement de l’information par blocs (non par mot)
Utilisé par les périphériques rapides
processeur disponibles pour les calculs
120/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Structure DMA
Traitement E/S :
Configuration tampons, pointeurs, compteur en mémoire centrale
(pilote) :
121/165
Lecture → Tampon vide
Ecriture → Tampon plein
Transfert direct en mémoire centrale des informations lues sur le
périphérique (contrôleur), sans interruption de la CPU
Interruption lorsque le tampon est plein ou l’E/S terminée.
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Structure DMA
122/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
Structure DMA
123/165
Accès direct à la mémoire centrale
E/S parallèle à d’autres travaux (sur CPU ou autre périphérique
DMA)
La mémoire ne peut écrire qu’un seul mot à la fois
Concurrence d’accès aux cycles mémoire
Nécessité d’un contrôleur de mémoire
Ralentissement des accès mémoire
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Architecture Von Neumann
Fonctionnement subscalaire / superscalaire
Interruptions - Gestion des périphériques
E/S mappées en mémoire
Principe
Réservation de plages de mémoire pour correspondre au registres du
contrôleur de périphérique.
Exemple : IBM PC
Chaque emplacement sur l’écran est mappé sur un emplacement
mémoire
Affichage d’un texte
écriture dans les emplacement mémoires correspondants
Même principe pour le partage mémoire centrale avec carte AGP
124/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Les différents niveaux de langage
127/165
Processeur :
Exécute du langage de bas niveau → L0
Programmeur :
Manipule un langage de plus haut niveau, plus convivial → L1
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Prise en charge des langages de haut niveau
Deux méthodes de prise en charge :
Traduction :
Remplace chaque instruction de L1 par une séquence d’instructions de
L0
Programme obtenu entièrement composé d’instructions du L0
Interprétation :
Un langage écrit en L0 prend en charge L1 sous la forme d’un flux de
donnée en entrée → interpréteur
Lecture séquentielle des instructions de L1 et exécution des séquences
L0 correspondantes
Possibilité de combiner les des deux méthodes [2]
128/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Empilement de machines virtuelles
129/165
Permet d’utiliser un langage de programmation Ln très éloigné de L0
augmentation progressive de la complexité
couches successives de machines virtuelles, interprétant des langages de
niveau d’abstraction croissant (Ln → Ln−1 )
Augmentation progressive du niveau d’abstraction
machine
machine
machine
...
machine
physique exécute le langage L0
virtuelle M1 interprète le langage L1 → L0
virtuelle M2 interprète le langage L2 → L1
virtuelle Mn interprète le langage Ln → Ln−1
interpréteur/traducteur de niveau n-1
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Empilement de machines virtuelles
Au minimum deux couches :
Couche 1 : langage machine
Couche 0 : matériel (portes logiques, additionneur... )
Généralement 6 couches [2] :
Niveau
Niveau
Niveau
Niveau
Niveau
Niveau
5
4
3
2
1
0
:
:
:
:
:
:
couche
couche
couche
couche
couche
couche
langage orienté application
langage d’assemblage
système d’exploitation
architecture du jeu d’instructions (ISA 11 )
micro-architecture
circuits logiques
11. Instruction Set Architecture
130/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Empilement de machines virtuelles
Niveaux 0 → 3 toujours interprétés
Niveaux 4 et supérieurs généralement traduits
Matériel et logiciel sont logiquement équivalents
Le matériel n’est que du logiciel pétrifié.
Karen Panetta Lentz
La réciproque est également vraie (émulation)
Problème du choix des fonctions à faire supporter par le matériel
131/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Le jeu d’instruction du processeur
Definition
Le jeu d’instructions est l’ensemble des opérations qu’un processeur
d’ordinateur peut exécuter. [3]
Ces circuits permettent d’effectuer des opérations :
élémentaires
addition, ET/OU logique...
chargement, rangement. . .
plus complexes
instructions SIMD a . . .
a. Single instruction multiple data
132/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
RISC contre CISC
133/165
Premiers processeurs
faible nombre d’instructions
Complexification progressive → CISC
haut niveau d’abstraction
certaines instructions nécessitent plusieurs cycles
nombre d’instructions figé (cas du VAX de DEC, Z80), sauf en cas
d’utilisation d’un interpréteur
Limitation du jeu d’instruction → RISC
Instruction simples et rapides
50 instructions optimisées (contre 200 - 300 pour le VAX)
limitation du niveau de complexité des adressages
augmentation du nombre de registres
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
RISC contre CISC
Le RISC pur n’a pas réussi à s’imposer dans la micro-informatique
échec relatif des UltraSPARC de Sun, PowerPC d’IBM
épineux problème de la rétro-compatibilité
décollage des ARM 12 sur nouvelles plateformes
Le CISC reste encore la règle
Principes de conception RISC → processeurs CISC
Cas du 486 d’Intel [15]
Propose un CISC
Cœur RISC → instructions les plus simples et fréquentes
Interpréteur → instructions plus complexes (lentes)
micro-instructions
12. Advanced Risc Machine
134/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Processeurs CISC/RISC
Processeurs CISC
S/360 (IBM)
Processeurs RISC
Alpha (DEC)
PowerPC (Motorola)
VAX (DEC)
MIPS
68xx, 680x0 (Motorola)
PA-RISC (Hewlett-Packard)
x86, Pentium (Intel)
SPARC
ARM
L’optimisation du code par les compilateurs est plus simple pour les
processeurs RISC que pour les processeurs CISC
135/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Chaı̂ne de production des programmes
137/165
Compilateurs, assembleurs, interpréteurs
Traduction en langage machine
Éditeur de lien
Assemblage de modules
Chargeur
Mise en mémoire d’un exécutable
Débogueur
facilite le test des programmes
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Production d’un programme
Cas d’un programme écrit en langage C
Compilé en assembleur
Assemblé en module objet (langage machine)
peuvent faire partie de bibliothèques
appel aux bibliothèques : point de branchement
Lié en image binaire
édition de liens statique
édition de liens dynamique
Chargé en mémoire pour exécution
138/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Le langage assembleur [10]
Definition
Un langage d’assemblage ou ”langage assembleur” est, en programmation
informatique, un langage de bas niveau qui représente le langage machine
sous une forme lisible par un humain.
Combinaisons de bits → symboles ” mnémoniques ”
Origines :
Programmes de l’EDSAC (1949) - traduction manuelle
Premier assembleur écrit par Nathaniel Rochester pour l’IBM-701
(premier IBM commercialisé) en 1954
Supplanté par les langages de haut niveau (FORTRAN, COBOL,
PL/I... ) en 1970-1980
139/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Le rôle du compilateur
Tâche principale d’un compilateur
Produire un code objet correct qui s’exécutera sur un ordinateur, à partir
d’un code exprimé dans un langage de plus haut niveau.
Autres fonctions courantes :
Optimiser le code généré
Améliorer la vitesse d’exécution
Réduire l’occupation mémoire du programme
140/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Les trois parties d’un compilateur [13]
Partie avant (ou frontale, souche) :
Préprocesseur
Lecture du code source
Production de la représentation intermédiaire
Indépendante du code cible
Partie centrale (facultative)
Optimisation du code intermédiaire
Indépendante des langages source et cible
Partie arrière (ou finale)
Exploite la représentation intermédiaire
Produit le code cible
Indépendante du code source
141/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Les quatre étapes de la production d’un exécutable
tape 1 Le prétraitement (preprocessing) : traite les directives de
compilation et les macros (commencent par #)
tape 2 La compilation (ccl) : produit du code assembleur (spécifique à une
architecture donnée)
tape 3 L’assemblage (as) : produit un fichier objet à partir du code
assembleur
Unix récents → format ELF (Executable and Linking Format)
Depuis Windows NT → format PE32/64 (Portable Executable).
Remplace NE (New Executable File Format)
tape 4 L’édition de lien : fait le lien entre les différentes fonctions utilisées
dans les fichiers objets.
Génération de l’exécutable.
142/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
La chaı̂ne de production d’un programme
Compilation
Code
source
Code
source
Code
Assembleur
143/165
Compilateur
Compilateur
Assembleur
Assembleur
Module
objet
Module
objet
Module
objet
Edition
des
liens
Éditeur
de
liens
Programme
exécutable
Chargement
Chargeur
Débogueur
Mémoire
Exécution
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Compilateur croisé (Cross Compiler )
Qu’est-ce qu’un compilateur croisé ?
C’est un programme capable de traduire un code source en code objet
destiné à un environnement d’exécution différent de celui où la compilation
est effectuée.
Exemples
Compilation sur x86 d’un exécutable pour ARM ou PPC
Optimisation spécifiques au type de processeur
Souvent utilisé dans le domaine de l’embarqué
limitations de l’architecture cible
144/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Exemple : le compilateur GCC
145/165
Gnu Compiler Collection
Supporte de nombreux langages sources
C, C++, ObjectiveC, Java, Ada, Fortran, Pascal, VHDL, D, Go,
Modula, PL/1, OpenMP
Peut générer des objets pour de nombreuses plateformes
Types de microprocesseurs
x86, ARM, PowerPC, DEC Alpha, MIPS, SPARC...
Systèmes d’exploitation
Windows, Linux, MacOS, VMS...
Porté sur de nombreuses plateformes
Explique en grande partie la grande portabilité des applications GNU
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Exemple de compilation croisée avec GCC
Connaitre le nom de l’architecture de compilation
$ gcc -dumpmachine
i686-linux-gnu
Compilation pour processeur ARM depuis i686
$ arm-linux-gnuabi-gcc essai.c -o essai
Compilation pour Windows depuis Linux
$ i586-mingw32msvc-gcc essai.c -o essai.exe
146/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Compilation et debug avec GCC
Générer du code assembleur avec debug
$ gcc -S -g3 source.c
-S : compilation seule (génération code assembleur)
-g3 : intégration des codes de debug (maximal debug information)
→ Génération d’un fichier source.s, contenant le code assembleur
Option
-g0
-g1
-g
-g3
147/165
Description
No debug information
Minimal debug information
Default debug information
Maximal debug information
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Compilateur bootstrap
Qu’est-ce que le bootstraping ?
En informatique, le terme bootstrapping décrit les techniques nécessaires à
l’écriture d’un compilateur (ou d’un assembleur) dans le langage de
programmation cible qu’il doit compiler
Les compilateurs sont généralement
écrits avec le langage qu’ils compilent
Étape importante dans l’évolution d’un
langage
148/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Liaison dynamique et bibliothèques partagées
Édition de liens statique :
liaison de toutes les bibliothèques dans le fichier exécutable
exécutable monolithique
Édition de liens dynamique :
liaison et chargement reportés au plus tard
au moment de l’exécution
évite duplication des bibliothèques
bibliothèques partagées
ne charge que le strict nécessaire
150/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Liaison dynamique et bibliothèques partagées
151/165
Stub :
Élément de remplacement (pointeur)
Inséré dans l’image, à la place d’une référence à la bibliothèque
(indication de la version)
Vérifie la présence de la routine utilisée en mémoire et la charge si
besoin
Assistance de la part du système
Permet à plusieurs processus d’accéder aux mêmes bibliothèques
partagées
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Les “shared object” de Linux
153/165
Partage d’objets entre programmes
Plus évolué que le simple partage de mémoire
Partage données et fonctions
Mécanismes de synchronisation
Peut être chargé et déchargé dynamiquement
Format ELF
Mécanisme de chargement et de liaison dynamique
Utilisé par le noyau → modules
Utilisation :
Stockées dans les répertoires /lib/, /usr/lib/...
Resencement des bibliothèques existantes : ldconfig
Consultation liaisons dynamiques d’un exécutable : ldd
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Pourquoi une pile d’exécution ?
Le CPU exécute séquentiellement les instructions du programme
Lors d’un appel de fonction, l’exécution est transférée vers cette
dernière (saut)
Les appels de fonctions peuvent être imbriqués ou récursifs
Après avoir exécuté la fonction → retour au point d’appel (valeurs
retour)
Questions
Comment s’y retrouver dans les appels de fonctions ?
Comment retrouver les valeurs retour
155/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Pile d’exécution (”la pile”, ”call stack”)
Finalités de la pile d’exécution
Enregistrer des informations sur les fonctions actives
Trace de l’endroit où chaque fonction active doit retourner à la fin de
son exécution
Valeurs retour des fonctions
Variables locales, paramètres de la fonction, etc...
156/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Pile d’exécution (”la pile”, ”call stack”)
Structure de pile :
FILO : First In Last Out
Restauration dans l’ordre inverse de la sauvegarde
Manipulée par les langages d’assemblage
Contenu de la pile cachée aux langages de haut niveau
Implémentation :
mise en œuvre par le compilateur
contrainte par l’architecture matérielle (CPU, mémoire... )
157/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Exemple d’utilisation d’une pile d’exécution
Code source
#include<stdio.h>
#include<stdlib.h>
int dire_bonjour(int nb) {
int i;
printf("Bonjour tout le monde ");
for (i=nb; i>0; i--) {
printf("!");
}
printf ("\n", nb);
if (nb>0) {
printf("(retour : %d)\n", dire_bonjour(nb-1));
}
return nb;
}
int main(void) {
printf("(Retour final : %d)\n", dire_bonjour(10));
return EXIT_SUCCESS;
}
158/165
Résultat
Bonjour
Bonjour
Bonjour
Bonjour
Bonjour
Bonjour
Bonjour
Bonjour
Bonjour
Bonjour
Bonjour
(retour
(retour
(retour
(retour
(retour
(retour
(retour
(retour
(retour
(retour
(Retour
tout le
tout le
tout le
tout le
tout le
tout le
tout le
tout le
tout le
tout le
tout le
: 0)
: 1)
: 2)
: 3)
: 4)
: 5)
: 6)
: 7)
: 8)
: 9)
final :
monde
monde
monde
monde
monde
monde
monde
monde
monde
monde
monde
10)
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
!!!!!!!!!!
!!!!!!!!!
!!!!!!!!
!!!!!!!
!!!!!!
!!!!!
!!!!
!!!
!!
!
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Exemple d’utilisation d’une pile d’exécution
Retour
Retour
dire_bonjour(0)
Appel
dire_bonjour(1)
Appel
dire_bonjour(2)
Appel
Résultat
Bonjour tout le
Bonjour tout le
Bonjour tout le
Bonjour tout le
Retour
dire_bonjour(4)
Bonjour tout le
Appel
Bonjour tout le
Retour
Bonjour tout le
dire_bonjour(5)
Appel
Bonjour tout le
Bonjour tout le
Retour
dire_bonjour(6)
Appel
Bonjour tout le
Bonjour tout le
Retour
dire_bonjour(7)
(retour : 0)
Appel
(retour : 1)
Retour
(retour : 2)
dire_bonjour(8)
Appel
(retour : 3)
(retour : 4)
Retour
dire_bonjour(9)
Appel
(retour : 5)
(retour : 6)
Retour
dire_bonjour(10)
(retour : 7)
Appel
(retour : 8)
Retour
Main()
(retour : 9)
(Retour final :
159/165 Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 Retour
dire_bonjour(3)
Appel
monde
monde
monde
monde
monde
monde
monde
monde
monde
monde
monde
!!!!!!!!!!
!!!!!!!!!
!!!!!!!!
!!!!!!!
!!!!!!
!!!!!
!!!!
!!!
!!
!
10)
Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Bibliographie I
XBits Laboratories.
Hardware news.
http://www.xbitlabs.com, 2012.
Andrew Tanenbaum.
Architecture de l’ordinateur.
Pearson éducation, 2005.
Wikipédia.
Jeu d’instructions.
http://fr.wikipedia.org/wiki/Jeu_d’instructions, 2011.
160/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Bibliographie II
161/165
Wikipédia.
Processeur.
http://fr.wikipedia.org/wiki/Processeur, 2011.
Wikipédia.
Architecture harvard, 11 2012.
Wikipédia.
Basic input output system.
http://fr.wikipedia.org/wiki/Basic_Input_Output_System,
2012.
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Bibliographie III
162/165
Wikipédia.
Konrad zuse.
http://fr.wikipedia.org/wiki/Konrad_Zuse, 2012.
Wikipédia.
Machine analytique.
http://fr.wikipedia.org/wiki/Machine_analytique, 2012.
Wikipédia.
Unified extensible firmware interface.
http://fr.wikipedia.org/wiki/Unified_Extensible_
Firmware_Interface, 2012.
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Bibliographie IV
163/165
Wikipédia.
Assembleur.
https://fr.wikipedia.org/wiki/Assembleur, 10 2013.
Wikipédia.
Botnet.
http://fr.wikipedia.org/wiki/Botnet, 9 2013.
Wikipédia.
Cloud computing.
http://fr.wikipedia.org/wiki/Cloud_Computing, 09 2013.
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Bibliographie V
Wikipédia.
Compilateur.
https://fr.wikipedia.org/wiki/Compilateur, 10 2013.
Wikipédia.
Infrastructure as a service.
http:
//fr.wikipedia.org/wiki/Infrastructure_as_a_service, 09
2013.
Wikipédia.
Jeu d’instructions x86.
https://fr.wikipedia.org/wiki/Jeu_d%27instructions_x86#
Instructions_originales_des_8086.2F8088, 10 2013.
164/165
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Historique - Grandes familles de systèmes
Architecture des ordinateurs
Environnement de développement et conception modulaire
Les différents niveaux de langage
Chaı̂ne de production des programmes
Edition de liens statique / dynamique
Exemple des “shared object” de Linux
Pile d’exécution
Bibliographie VI
165/165
Wikipédia.
Taxinomie de flynn.
http://fr.wikipedia.org/wiki/Taxinomie_de_Flynn, 9 2013.
Wikipédia.
Alan turing.
https://fr.wikipedia.org/wiki/Alan_Turing, 09 2015.
Wikipédia.
John von neumann.
https://fr.wikipedia.org/wiki/John_von_Neumann, 09 2015.
Rémi LEBLOND http://remileblond.fr/category/cnam/smb137/SMB137 - Première partie
Téléchargement
Study collections