440 likes | 599 Views
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.
E N D
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 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
Compilateur La hiérarchie de traduction Programme en Pascal, C, C++ JAVA !!!!... ? Programme en Langage assembleur Hiérarchie de traduction
Compilateur Assembleur La hiérarchie de traduction Programme en Pascal, C, C++ JAVA !!!!... ? Programme en Langage assembleur Hiérarchie de traduction Programme en Langage machine
Compilateur Assembleur Chargeur en Mémoire La hiérarchie de traduction ? Programme en Pascal, C, C++ JAVA !!!!... Programme en Langage assembleur Hiérarchie de traduction Programme en Langage machine
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.
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 ?
Compilateur Assembleur Chargeur en Mémoire Traduction 1 { int A=8, B=4, C; C=A+B; } ? Add C,B,A Hiérarchie de traduction 11011110000 F800 01101010101 F810 - - F820 10000100100 FB00 01100000111 1000 Données
Type Mémoire-Mémoire : VAX • 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. La séquencede code pour C=A+B (3,3) add c,a,b Mem A B C 1 + 1
Compilateur Assembleur Chargeur en Mémoire Traduction 2 { int A=8, B=4, C; C=A+B; } ? Load r1,A Add r1,B Store C,r1 Hiérarchie de traduction 11011110000 F800 01101010101 F810 - - F820 10000100100 FB00 01100000111 FB01 00011111111 10001001010 FB03 Données
Type d’architecture : intel 80*86, 68000 • 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. 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
? La philosophie CISC Conception du Logiciel CISC Machine complexe Conception du Matériel CISC Complex Instruction Set Computer
Compilateur Assembleur Chargeur en Mémoire 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 Hiérarchie de traduction 11011110000 F800 01101010101 F810 - - F820 10000100100 FB00 01100000111 FB01 10001001010 FB02 10010100000 FB03 Données
Type Registre-registre : PowerPC, MIPS • Avantages : Codage simple d’instructions de longueur fixe. • Inconvénients : Nombre d’instructions plus élevé que les architectures à références mémoire. 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
? La philosophie RISC 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 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.
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 • 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. 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
BIOS Système d'exploitation Intégrateur graphique Applications Hiérarchie des programmes 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.
S1 mux1 Dbuf Pc sp Control UNIT MEM ad S2 Mux2 E 1 +/- S3 S4 Dbuf mux1 Pc sp Mux2 MEM +/- b a Vue hiérarchique de la machine Comportemental Structurel Logique data Physique
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
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 transistorsMicroprogrammes: séquence d'étapes utilisées pour réaliser les instructions du langage machineLangage machine : constitue d’instructions élémentaires mais suffisantes pour exécuter n’importe quel programmeNoyau 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érieurLes applications : collections de programmes qui permettent de résoudre des problèmes spécifiques.
Langage évolué (C, Java …) compilé ou interprété Langage d’assemblage Système d’exploitation Micro-programmation Une autre vue Logiciel Machine Virtuelle Bureau de l’archi Liaisons Bus, chemins de données Périphériques Imprimantes, disques, écrans Circuits logiques Matériel Unité de commande Unité centrale UAL additionneurs Mux mémoires registres bascules 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 : • 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
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 Type de donnes +opérations Liste Construction Pointeur LOAD i,R1 LAOD ... .... Traduction
? Architecture du Jeu d’instructions L’interface entre logiciel et matériel Conception du Logiciel 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 • 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. Tps UC = NI * CPI * Tps de cycle
? Architecture du Jeu d’instructions L’architecture de jeu d’instructions Conception du Logiciel • Le nombre d’instructions • Nombre de cycles par instruction • 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.