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