L ’informatique : la mécanique de l ’abstraction Introduction à la hiérarchie de traduction Des exemples pour mieux comprendre Définitions des différents niveaux d ’abstraction La raison d ’être d ’un modèle de données Conclusion
Objectifs Nous verrons qu ’un programme écrit dans un langage de haut niveau doit être traduit dans le langage de la machine avant d ’être exécuté. Nous verrons que la difficulté de concevoir une machine nous oblige à décomposer le problème en sous problèmes. Nous définirons l ’interface entre la conception du logiciel et du matériel.
Quand D. Dupont était Jeune …et beau :) ?
Quand Monsieur DUPONT exécute un programme ! ?
La hiérarchie de traduction ? Hiérarchie de traduction
La hiérarchie de traduction ? Programme en Pascal, C, C++ JAVA Hiérarchie de traduction
La hiérarchie de traduction ? Programme en Pascal, C, C++ JAVA !!!!... Compilateur Programme en Langage assembleur Hiérarchie de traduction
La hiérarchie de traduction ? Programme en Pascal, C, C++ JAVA !!!!... Compilateur Programme en Langage assembleur Hiérarchie de traduction Assembleur Programme en Langage machine
La hiérarchie de traduction ? Programme en Pascal, C, C++ JAVA !!!!... Compilateur Programme en Langage assembleur Hiérarchie de traduction Assembleur Programme en Langage machine Chargeur en Mémoire
Des définitions Programme : Suite de directives appelées instructions définissant complètement un traitement à faire exécuter par l ’ordinateur. Compilateur : Programme traduisant un langage évolué en langage machine. Langage assembleur : représentation symbolique des programmes Assembleur traduit un fichier contenant des instructions du langage assembleur en un fichier contenant des instructions machine binaires et des données binaires. Langage machine est défini par la liste des instructions d ’un ordinateur, et leur représentation sous forme binaire. Il est directement exécutable par l ’ordinateur. Chargeur place le langage machine dans la mémoire afin de l ’exécuter. _ pour exécuter un programme (rôle du chargeur): Il lit l ’entête du fichier exécutable pour définir la taille des segments de texte de données 2 Il crée un nouvel espace d ’adressage pour le programme. 3 il copie les instructions et les données du fichiers exécutable dans le nouvel espace d ’dressage. 4 copie sur al pile les arguments passé au programme Il initialise les registres machine Effectue un saut vers une procédure de démarrage qui copie les arguments du programme.
Questions La traduction est elle unique ? Quelles sont les répercutions sur l ’architecture de la machine cible ? Quelle est la frontière entre le logiciel et le matériel ? Quel est l ’objectif à atteindre ?
Hiérarchie de traduction Traduction 1 { int A=8, B=4, C; C=A+B; } ? Compilateur Add C,B,A Hiérarchie de traduction Assembleur 11011110000 F800 01101010101 F810 - - F820 10000100100 FB00 01100000111 1000 Données Chargeur en Mémoire
Type Mémoire-Mémoire : VAX La séquence de code pour C=A+B (3,3) add c,a,b Mem A B C 1 + 1 Avantages : Le code le plus compact. Ne gaspille pas des registres pour des données secondaires Inconvénients : Grande variation de la taille des instructions, grande variation du travail effectué par instruction. Les accès mémoire créent un goulot d’étranglement.
Hiérarchie de traduction Traduction 2 { int A=8, B=4, C; C=A+B; } ? Compilateur Load r1,A Add r1,B Store C,r1 Hiérarchie de traduction Assembleur 11011110000 F800 01101010101 F810 - - F820 10000100100 FB00 01100000111 FB01 00011111111 10001001010 FB03 Données Chargeur en Mémoire
Type d’architecture : intel 80*86, 68000 La séquence de code pour C=A+B (2,1) Load r1,A Add r1,B Store C,r1 r1 1 Mem A B C 2 1 2 + 3 3 Avantages : Les données peuvent être obtenues sans chargement préalable. Inconvénients : Les opérandes ne sont pas équilibrées puisque l’opérande source est détruite.
CISC La philosophie CISC Machine complexe ? Conception du Logiciel CISC Machine complexe Conception du Matériel CISC Complex Instruction Set Computer
Hiérarchie de traduction Traduction 3 { int A=8, B=4, C; C=A+B; } ? (0,0) Load r1,A Load r2,B Add r3,r2,r1 Store C,r3 Compilateur Hiérarchie de traduction Assembleur 11011110000 F800 01101010101 F810 - - F820 10000100100 FB00 01100000111 FB01 10001001010 FB02 10010100000 FB03 Données Chargeur en Mémoire
Type Registre-registre : PowerPC, MIPS La séquence de code pour C=A+B (0,0) Load r1,A Load r2,B Add r3,r2,r1 Store C,r3 1 Mem A B C 1 2 r1 r2 r3 + 3 2 4 4 3 Avantages : Codage simple d’instructions de longueur fixe. Inconvénients : Nombre d’instructions plus élevé que les architectures à références mémoire.
RISC La philosophie RISC Compilateur complexe ? Conception du Logiciel Compilateur complexe RISC Conception du Matériel RISC Reduced Instruction Set Computer
BILAN : Conception d ’une machine ?
Conception d ’une machine ? Conception du Logiciel Conception du Matériel
Conception Principe de l’abstraction Machines virtuelles ? Conception du Logiciel Machines virtuelles Principe de l’abstraction Conception du Matériel
L’informatique : la mécanisation de l’abstraction l’abstraction implique souvent simplification, le remplacement d’une situation complexe et détaillée du monde réel par un modèle compréhensible grâce au quel nous pouvons résoudre un problème. Exemple : On peut modéliser un circuit électronique par de la logique. Cette modélisation n’est pas exacte, elle simplifie nombre de détails (temps pour traverser un circuit). Nous faisons donc abstraction des détails dont l’impact sur la solution à un problème est minimal ou inexistant, créant par là un modèle qui nous permet de nous consacrer à l’essence du problème. Nous faisons donc abstraction des détails dont l’impact sur la solution à un problème est minimal ou inexistant, créant par la un modèle qui nous permet de nous consacrer à l’essence du problème.
La hiérarchie des abstractions dans un ordinateur Vue simplifié en couches hiérarchique Logiciel d’application Logiciel système Matériel utilisateur
Exemple de décomposition d’un système informatique Logiciels Logiciels Logiciels d’application systèmes système Compilateurs d’exploitation LAteX Tableurs gcc Mémoire Système de contrôleur virtuelle gestion de fichier E/S Le logiciel ne se réduit pas à des couches monolithiques mais il est compose de nombreux programmes qui se battissent les uns sur les autres. Les programmes appréciatifs sont destines aux programmeurs. Les programmes systèmes sont des fournisseurs de services couramment utilises. Le logiciel ne se réduit pas à des couches monolithiques mais il est composé de nombreux programmes qui se battissent les uns sur les autres. Les programmes applicatifs sont destinés aux programmeurs. Les programmes systèmes sont des fournisseurs de services couramment utilisés.
Hiérarchie des programmes BIOS Système d'exploitation Intégrateur graphique Applications Le bios est un programme pré-enregistré par le constructeur. Il est automatiquement exécuté. Il initialise la configuration, (boot) et contrôle les connexions C'est le premier programme que l'ordinateur charge en mémoire. Il est composé d'un ensemble de fichiers qui servent d'intermédiaire entre l'utilisateur et la machine. Il gère les organes de l'ordinateur et les fichiers. Ils constituent une couche intermédiaire entre le système d'exploitation et les applications. Ils affichent un environnement graphique convivial qui simplifie l'utilisation de l'appareil Ce sont les programmes ou progiciels utilisés pour réaliser des travaux bureautiques ou autres.
Vue hiérarchique de la machine Comportemental Structurel Dbuf mux1 sp Pc Mux2 +/- MEM Logique mux1 Dbuf sp Pc MEM Mux2 +/- 1 Control UNIT ad data Physique E a b S2 S3 S4 S1
La hiérarchie des abstractions dans un ordinateur Un ordinateur et ses logiciels présentent une hiérarchie d’abstraction appelée des machines virtuelles. Niveau Abstraction 6 Programmes applicatifs 5 Langage de programmation 4 Langage assembleur 3 Noyau du système d’exploitation 2 Langage machine 1 Microprogramme 0 Logique numérique Chaque niveau est implanté par une traduction ou une interprétation de ses instructions en utilisant les niveaux inférieurs. Logique Numérique est une abstraction des circuits électroniques constitues de portes faites de transistors Microprogrammes : séquence d'étapes utilisées pour réaliser les instructions du langage machine Langage machine : constitue d’instructions élémentaires mais suffisantes pour exécuter n’importe quel programme Noyau du système d’exploitation : Permet d’allouer et d’ordonnancer les ressources d’un ordinateur aux différents programmes s'exécutant sur la machine. Langage d’assemblage : représentation symbolique des instructions rencontrées au nivaux inférieur. L’assembleur est le traducteur. Les langages de hauts niveau : niveau du programmeur. Le compilateur traduit au niveau inférieur Les applications : collections de programmes qui permettent de résoudre des problèmes spécifiques.
La hiérarchie des abstractions dans un ordinateur Chaque niveau est implanté par une traduction ou une interprétation de ses instructions en utilisant les niveaux inférieurs. Logique Numérique : est une abstraction des circuits électroniques constitues de portes faites de transistors Microprogrammes : séquence d'étapes utilisées pour réaliser les instructions du langage machine Langage machine : constitue d’instructions élémentaires mais suffisantes pour exécuter n’importe quel programme Noyau du système d’exploitation : permet d’allouer et d’ordonnancer les ressources d’un ordinateur aux différents programmes s'exécutant sur la machine. Langage d’assemblage : représentation symbolique des instructions rencontrées au nivaux inférieur. L’assembleur est le traducteur. Les langages de hauts niveau : niveau du programmeur. Le compilateur traduit au niveau inférieur Les applications : collections de programmes qui permettent de résoudre des problèmes spécifiques.
Logiciel Matériel Une autre vue Machine Virtuelle Langage évolué (C, Java …) compilé ou interprété Logiciel Langage d’assemblage Machine Virtuelle Système d’exploitation Micro-programmation Bureau de l’archi Liaisons Bus, chemins de données Périphériques Imprimantes, disques, écrans Circuits logiques Matériel mémoires registres bascules Unité de commande Unité centrale UAL additionneurs Mux Introduction 1- Algebre de Boole 2- Fonctionnement de base 3- Hierarchie Memoire 4- Historique 5- Intro-logique 6- Karnaugh 7- Les circuits 8- Les opérateurs 9- Numération Physique 10- Microelectrolithe 11- Le transistor Le séquentiel 12- Mémoire 13- Système séquentiel Architecture des ordinateurs 14- Chemin de données 15- Description 16- Les instructions ArchitectureMIPS 17- Assembleur 18- Chemin de données monocycle 19- Chemin dedonnées Multicycle 20- Contrôle 21- Contôlemulticycle Portes ET,Nand,NOR Circuits électroniques circuit intégrés, puces Composants électroniques Physique Effet transistor
Trois outils importants pour résoudre des problèmes Les modèles de données les abstractions utilisées pour décrire les problèmes : logique, graphe Les structures de données Les constructions des langages de programmation utilisées pour représenter des modèles de données comme des tableaux, les pointeurs qui permettent de construire des structures de données pour représenter des abstraction plus complexes comme les graphes. Les algorithmes Les techniques utilisées pour obtenir des solutions manipulant les modèles de données ou les structures de données.
Modèle de données Il comporte habituellement deux aspects : Exemple : les valeurs pouvant être attribuées aux objets : aspect statique. les opérations sur les données : aspect dynamique. Exemple : liste éléments (a1,a2, ..., an) opérations : insérer, concaténer. Système d’exploitation : Le modèle de données d’UNIX comprend des concepts tels que les fichiers, les répertoires et les processus. Rappel : Les processus sont des exécutions individuelles de programmes. Ils peuvent être combines par des tubes de communication, où la sortie d’un processus sert d'entrée au processus suivant. Langage C Le système d’exploitation dont la fonction est de gérer et d’organiser le partage des ressources d’un ordinateur. Les donnes elles mêmes sont stockées dans des fichiers qui dans Unix, sont des chaînes de caractères Les fichiers sont classés dans des répertoires qui sont des collections de fichiers Les processus sont des exécutions individuelles de programmes. Ils peuvent être combines par des tubes de communication, ou la sortie d’un processus sert d'entrée au processus suivant.
Structures de données Lorsque le modèle de données d’un langage utilise pour écrire un programme est insuffisant pour représenter les problèmes auxquels nous sommes confrontés, nous devons imaginer de nouveaux modèles conçus à partir de ceux supportés par le langage. Les structures de données sont des méthodes pour représenter des abstractions dans le modèle de données du langage que celui-ci ne supporte pas explicitement. Le langage LeLisp supporte les arbres et pas PASCAL
Remarque importante Malgré leur appellation voisine une liste et une liste chaînée sont des concepts très différents. Une liste est une abstraction mathématique ou un modèle de données. Une liste chaînée est une structures de données : c’est la structure de données que nous utilisons pour représenter les listes abstraites dans les programmes.
Supporter le modèle de données d’un langage Comment des primitives de langage machine classique sont utilisées pour implanter les opérations fournies par un langage ? Programme/définitions de nouvelles structures de données Langage/Modèle de donnes Type de donnes +opérations Machine/Modèle de données Liste Construction Pointeur LOAD i,R1 LAOD ... .... Traduction
L’interface entre logiciel et matériel ? Conception du Logiciel Architecture du Jeu d’instructions ISA Conception du Matériel
L ’architecture du jeu d ’instructions L’ISA ou simplement l’architecture d’une machine comprend tout ce que les programmeurs doivent savoir pour faire fonctionner correctement un programme en langage machine, en particulier les instructions les dispositifs d’E/S. Cette interface permet aux concepteurs d'ordinateurs de parler des fonctions indépendamment du matériel qui les réalise. Cette abstraction abstraite permet un grand nombre de mises en œuvre avec des coûts et des performances variables pour un même logiciel à exécuter. Un des objectifs de ce cours est de le découvrir.
Performances Tps UC = NI * CPI * Tps de cycle Les performances des machines sont définies par trois facteurs clés : le nombre d’instructions le temps de cycles d’horloge le nombre de cycles d’horloge par instruction. Le compilateur et l’architecture de jeu d’instructions déterminent le nombre d’instructions requises pour un programme donné La mise en œuvre définit le temps de cycle d’horloge, ainsi que le nombre de cycles d’horloge par instruction.
L’architecture de jeu d’instructions ? Conception du Logiciel Le nombre d’instructions Nombre de cycles par instruction Architecture du Jeu d’instructions Temps de cycle Nombre de cycles par instruction Conception du Matériel C ’est ce problème qui motive toute la communauté scientifique
Objectif du cours Comprendre les principes de l ’organisation des ordinateurs.
Conclusion : L’abstraction Le Matériel et le Logiciel sont constitues de couches hiérarchisées, chaque couche inférieure dissimulant des détails de la couche immédiatement supérieure. C’est par ce principe de l’abstraction que les concepteurs de logiciel viennent à bout de la complexité des systèmes informatiques. Une des interface clé entre les différents niveaux d’abstraction est l’architecture de jeu d’instructions: c’est l’interface entre le matériel et le logiciel de plus bas niveau. L’ISA ou simplement l’architecture d’une machine comprend tout ce que les programmeurs doivent savoir pour faire fonctionner correctement un programme en langage machine, en particulier les instructions les dispositifs d’E/S. Cette interface permet aux concepteurs d'ordinateurs de parler des fonctions indépendamment du matériel qui les réalise.