L informatique : la mécanique de l abstraction Introduction à la hiérarchie de traduction Des...

Preview:

Citation preview

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

Hiérarchie de traduction

? Programme enPascal, C, C++JAVA

La hiérarchie de traduction

Compilateur

Hiérarchie de traduction

?

Programme enLangage assembleur

Programme enPascal, C, C++JAVA !!!!...

La hiérarchie de traduction

Assembleur

Compilateur

Hiérarchie de traduction

?

Programme enLangage machine

Programme enLangage assembleur

Programme enPascal, C, C++JAVA !!!!...

La hiérarchie de traduction

Assembleur

Chargeuren Mémoire

Compilateur

Hiérarchie de traduction

?

Programme enLangage machine

Programme enLangage assembleur

Programme enPascal, C, C++JAVA !!!!...

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 ?

Traduction 1

Assembleur

Chargeuren Mémoire

Compilateur

Hiérarchie de traduction

?

{int A=8, B=4, C; C=A+B;}

11011110000 F80001101010101 F810- - F82010000100100 FB00011000001111000

Add C,B,A

Données

Type Mémoire-Mémoire : VAX

(3,3) add c,a,b

La séquence de code pour C=A+B

MemABC

MemABC

++

• 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.

1

1

Traduction 2

Assembleur

Chargeuren Mémoire

Compilateur

Hiérarchie de traduction

?

{int A=8, B=4, C; C=A+B;}

11011110000 F80001101010101 F810- - F82010000100100 FB0001100000111 FB010001111111110001001010 FB03

Load r1,AAdd r1,BStore C,r1

Données

Type d’architecture : intel 80*86, 68000

(2,1)Load r1,AAdd r1,BStore C,r1

La séquence de code pour C=A+B

1

2r1

MemABC

MemABC

++

12

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.

La philosophie CISC

?

Conception du Matériel

CISC

Conception du Logiciel

Machine complexe

CISC Complex Instruction Set Computer

Traduction 3

Assembleur

Chargeuren Mémoire

Compilateur

Hiérarchie de traduction

?

{int A=8, B=4, C; C=A+B;}

11011110000 F80001101010101 F810- - F82010000100100 FB0001100000111 FB0110001001010 FB0210010100000 FB03

Données

(0,0)Load r1,ALoad r2,BAdd r3,r2,r1Store C,r3

Type Registre-registre : PowerPC, MIPS

(0,0)Load r1,ALoad r2,BAdd r3,r2,r1Store C,r3

La séquence de code pour C=A+B

1

2r1r2r3

MemABC

MemABC

++

1

2

3

3

• Avantages : Codage simple d’instructions de longueur fixe.

• Inconvénients : Nombre d’instructions plus élevé que les architectures à références mémoire.

4

4

La philosophie RISC

?

Conception du Matériel

RISC

Compilateur complexe

RISC Reduced Instruction Set Computer

Conception du Logiciel

BILAN : Conception d ’une machine

?

Conception d ’une machine

?

Conception du Matériel

Conception du Logiciel

Conception

?

Conception du Matériel

Conception du Logiciel

Principe del’abstraction

Machinesvirtuelles

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.

MatérielMatériel

La hiérarchie des abstractions dans un ordinateur

• Vue simplifié en couches hiérarchique

Logiciel système

Logiciel d’application

utilisateur

Exemple de décomposition d’un système informatique

Logiciels

Logiciels Logicielsd’application systèmes

LAteX Tableurssystème Compilateurs

d’exploitation

gcc

Mémoire Système de contrôleurvirtuelle gestion de fichier E/S

• 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èmed'exploitation

Intégrateurgraphique

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

Dbuf

mux1

spPc

Mux2+/- M

EM

mux1 Dbuf

sp Pc

ME

M

Mux2

+/-

1

Co

ntr

ol U

NIT

ad

data

Comportemental StructurelLogique

Physique

E

ab

S2S3S4

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 Abstraction6 Programmes applicatifs5 Langage de programmation4 Langage assembleur3 Noyau du système d’exploitation2 Langage machine1 Microprogramme0 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.

Log

icie

lL

ogic

iel

Mat

érie

lM

atér

iel

Langage d’assemblage

Système d’exploitation

Langage évolué (C, Java …) compilé ou interprété

Micro-programmation

LiaisonsBus, chemins de données

PériphériquesImprimantes, disques, écrans

Circuits logiques

mémoiresregistresbascules

Unité de commande Unité centraleUALadditionneurs Mux

Portes ET,Nand,NOR

Circuits électroniques circuit intégrés, pucesComposants électroniques

Physique Effet transistor

Mac

hine

Vir

tuel

le

Bureau del’archi

Une autre vue

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

Programme/définitions de nouvellesstructures de données

Langage/Modèle de donnesType de donnes +opérations

Machine/Modèle de donnéesType de donnes +opérations

• Comment des primitives de langage machine classique sont utilisées pour implanter les opérations fournies par un langage ?

Pointeur

LOAD i,R1LAOD .......

Liste

L’interface entre logiciel et matériel

?

Architecture du Jeu d’instructions

Conception du Matériel

Conception du Logiciel

ISA

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

L’architecture de jeu d’instructions

?

Conception du Matériel

Conception du Logiciel

•Temps de cycle•Nombre de cycles par instruction

Architecture du Jeu d’instructions

•Le nombre d’instructions•Nombre de cycles par instruction

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.

Recommended