Sif-10531 Cours 1 n 1.Introduction u Qu'est-ce que larchitecture des ordinateurs? u Interaction...
-
Upload
gwenael-chauvet -
Category
Documents
-
view
106 -
download
0
Transcript of Sif-10531 Cours 1 n 1.Introduction u Qu'est-ce que larchitecture des ordinateurs? u Interaction...
sif-1053 1
Cours 1 1.Introduction
Qu'est-ce que l’architecture des ordinateurs?
Interaction Logiciel/Matériel
Le matériel Chapitre 1 de CS et CSA
Introduction au langage Chttp://melem.developpez.com/langagec/initc/http://docs.linux.cz/programming/c/c_marshall/CE.html
sif-1053 2
Qu'est-ce que l’architecture des ordinateurs?
sif-1053 3
Qu'est-ce que l’architecture des ordinateurs?
sif-1053 4
Qu'est-ce que l’architecture des ordinateurs?
sif-1053 5
Qu'est-ce que l’architecture des ordinateurs?
sif-1053 6
Qu'est-ce que l’architecture des ordinateurs?
sif-1053 7
Qu'est-ce que l’architecture des ordinateurs?
sif-1053 8
Qu'est-ce que l’architecture des ordinateurs?
sif-1053 9
Qu'est-ce que l’architecture des ordinateurs?
sif-1053 10
Qu'est-ce que l’architecture des ordinateurs?
sif-1053 11
Qu'est-ce que l’architecture des ordinateurs?
Cortex-A9: Pouvant servir dans des appareils qui requièrent peud’énergie comme les IPhone, Ipad etc…
sif-1053 12
Qu'est-ce que l’architecture des ordinateurs?
Tablette comme la Galaxy Tab 10.1 de Samsung
sif-1053 13
Qu'est-ce que l’architecture des ordinateurs?Tablette comme la Galaxy Tab 10.1 de Samsung (CPU: Dual-Core 1Ghz, 16 Go Mémoire Flash, WiFi, Dual Camera)
sif-1053 14
Qu'est-ce que l’architecture des ordinateurs?Téléphone intelligent comme le Galaxy S4 mini:
http://www.nextpowerup.com/news/1278/samsung-galaxy-s4-mini-features-exynos-5210.htm
sif-1053 15
Qu'est-ce que l’architecture des ordinateurs?Téléphone intelligent comme le Nexus 4 (Google):
http://www.google.ca/intl/fr/nexus/4/specs/
sif-1053 16
Qu'est-ce que l’architecture des ordinateurs?Tablette comme la Nexus 10 (Google):
http://www.google.com/nexus/10/
sif-1053 17
Qu'est-ce que l’architecture des ordinateurs?Montre intelligente comme la Galaxy Gear (Samsung):
http://www.metronews.fr/high-tech/ifa-2013-samsung-galaxy-gear-caracteristiques-prix-date-et-fonctionnalites/mmid!i6oxiW6ftQ4o/
sif-1053 18
Qu'est-ce que l’architecture des ordinateurs?Système d’exploitation Android
sif-1053 19
Qu'est-ce que l’architecture des ordinateurs?Système d’exploitation Android
sif-1053 20
Qu'est-ce que l’architecture des ordinateurs?
sif-1053 21
Qu'est-ce que l’architecture des ordinateurs? Un ordinateur est une machine capable de résoudre des problèmes en appliquant des instructions préalablement définies.
La suite des instructions décrivant la façon dont l ’ordinateur doit effectuer un certain travail est appelée programme.
ou Un ensemble d ’unités électroniques qui sous le contrôle d ’instructions storées dans sa propre unité de mémoire accepte et store de l ’information, exécute des opérations arithmétiques et logiques et produit les résultats conséquents.
sif-1053 22
Qu'est-ce que l’architecture des ordinateurs?
sif-1053 23
Qu'est-ce que l’architecture des ordinateurs?
sif-1053 24
Qu'est-ce que l’architecture des ordinateurs? Avec le développement de l’INTERNET, la notion d’architecture répartie à fait de plus en plus sa place
L’architecture des ordinateurs doit donc incorporer le réseau
L’architecture des ordinateurs est alors un ensemble de composantes matérielles et logicielles coopérants et ce souvent en réseau, pour exécuter des programmes
sif-1053 25
Qu'est-ce que l’architecture des ordinateurs?: Cloud computing
• Voir la page WEB de Wikipédia: http://fr.wikipedia.org/wiki/Cloud_computing#Syst.C3.A8mes_de_cloud_computing
sif-1053 26
Interaction Logicielle/Matérielle
sif-1053 27
Interaction Logicielle/Matérielle
sif-1053 28
Interaction Logicielle/Matérielle
sif-1053 29
Logiciel => Langages L'ensemble des instructions exécutables directement par un ordinateur forme un langage qui permet aux gens de communiquer avec cet ordinateur. C'est ce qu'on appelle le langage machine.
Lorsqu'on conçoit un nouvel ordinateur, il convient de choisir les instructions qui forment le langage machine. Il est donc souhaitable que ces instructions soient les plus simples possibles.
Par contre, ces langages sont alors si primitifs qu'il est extrêmement pénible et fastidieux de les utiliser.
sif-1053 30
Comment percevoir la machine?
Cette simple observation a mené,avec les années, à définir l ’ordinateur comme une « collection structurée d ’abstractions ».
Dans ce modèle, chaque niveau d ’abstraction repose sur le niveau précédent.
On arrive donc à concevoir la machine comme étant une « structure organisée » (Structured Computer Organization).
sif-1053 31
Les niveaux d’abstraction Chaque nouveau niveau est défini par un nouveau jeu d ’instructions plus pratique à utiliser, par l ’humain, que le langage du niveau précédent.
Ces nouvelles instructions forme un langage, par exemple L1, de la même façon que l ’ensemble des instructions machine forme le langage L0.
N ’oublions pas que l ’ordinateur ne peut exécuter que des programmes écrits dans son langage machine, soit L0.
sif-1053 32
On va donc devoir nécessairement « passer » du langage L1 ou Ln au langage L0.
Il y a deux techniques pour réaliser ce passage :
La traduction ou la compilation;l ’interprétation.
À quel niveau maintenant doit se situer « l ’engin » responsable de réaliser le passage d ’un niveau au précédent?
Réponse, à tous les niveaux!
sif-1053 33
Comment? En imaginant pour chaque niveau un « ordinateur hypothétique » que l’on appelle une machine virtuelle.
Ainsi, chaque niveau est également défini par sa machine virtuelle, M0, M1, Mn.
On peut écrire des programmes pour les machines virtuelles comme si elles existaient réellement. Pour que la traduction ou l'interprétation reste assez simple il faut que les langages Ln et Ln-1 ne soient pas trop différents.
sif-1053 34
sif-1053 35
Langage et machine virtuelle sont en relation très étroite. Toute machine a son langage machine formé de l'ensemble des instructions de base qu'elle peut exécuter. On peut donc dire qu'une machine définit un langage.
Mais réciproquement un langage définit une machine et, plus précisément, un langage définit la machine qui peut exécuter tous les programmes écrits en ce langage.
Un ordinateur composé de n couches peut donc être vu comme n machines virtuelles distinctes, chaque machine virtuelle ayant son propre langage.
Ainsi, nous utilisons indifféremment les termes “machines virtuelles, “couches” et “niveaux”.
sif-1053 36
Les machines contemporaines présentent six niveaux.
Si on résume, on peut dire qu'un ordinateur peut être vu comme une suite de couches, chaque couche englobant toutes les couches précédentes. Une couche représente un certain niveau d'abstraction et comporte divers objets et opérations sur ces objets.
sif-1053 37
Langage C
sif-1053 38
L0: Couche logique digitale. Objets manipulés sont des portes logiques (ET, OU).
Combinaisons de portes (registres, circuits du CPU).
Données manipulées: niveaux logiques 0, 1, tensions 0-5 V.
L1: Couche microarchitecture (microcommande).
Comporte des registres et une unité arithmétique et logique (ALU).
Données manipulées: Signaux de contrôle provenant du microprogramme (unité de contrôle)
sif-1053 39
L2: Couche ISA (Instruction Set Architecture).
Données manipulées: Les instructions machines, codes d ’instructions en binaire.
L3: Couche OS (couche hybride). Données manipulées: Instructions interprétées par le OS.
Instructions interprétées directement par le microprogramme.
sif-1053 40
L4: Couche langage d ’assemblage. Données manipulées: Forme symbolique d ’un des langages L2, L3.
Un assembleur traduit le langage assembleur (L4) en codes d ’instruction.
L5: Couche langage de haut niveau. Données manipulées: Instructions de haut niveau.
Langages C, C++, JAVA etc,. Compilateur traduit le langage de haut niveau en langage L3 ou L4.
Interprétation dans certain cas (JAVA)
sif-1053 41
COUCHES L5 L4 L2
sif-1053 42
L’abstraction logicielle est aussi importante : mais n’oubliez pas la RÉALITÉ Dans la plupart des cours de programmation
l’emphase est mise sur l’abstraction Types de données abstraits Notions de pointeur absentes
Les abstractions ont des limites Principalement lorsque des erreurs (bugs) surviennent
Il faut alors bien comprendre l’implémentation matérielle
Bienfaits Permet de devenir de meilleurs programmeurs
Facilite la corrections des bugs Facilite le développement de programmes
performants Prépare l’étudiant à d’autres cours
Système d’exploitation, Réseau, Architecture réparties, Programmation en temps réel
sif-1053 43
RÉALITÉ #1
Les données de type int sont-elles nécessairement entières, et celles
float sont-elles réelles ? Exemples
x2 ≥ 0?Float: OUI!Int: arithmétique signée ???
• 40000 * 40000 --> 1600000000• 50000 * 50000 --> ??
(x + y) + z = x + (y + z)?Unsigned & Signed Int: OUI!Float:
• (1e20 + -1e20) + 3.14 --> 3.14• 1e20 + (-1e20 + 3.14) --> ??
sif-1053 44
Nous ne pouvons plus assumer les propriétés habituelles des opérations arithmétiques
A cause des représentations internes des données qui sont finies
Opérations sur les entiers respectent les propriétés de commutativité, associativité, distributivité
Opérations sur les réels doivent respecter un ordre déterminé (précision des résultats) et la valeur des signes
sif-1053 45
RÉALITÉ #2
Nous devons avoir une connaissance de l’assembleur
Vous n’aurez certainement pas la chance de coder de grosses applications en assembleur
Les compilateurs modernes sont bien meilleurs et sont beaucoup plus patients que nous
La connaissance de l’assembleur est importante pour comprendre l’exécution des programmes au niveau de la machine
Comprendre le comportment des programmes lors de bugs
Pour améliorer la performance des programmes Implémentation de systèmes logiciels intégrés
sif-1053 46
RÉALITÉ #3
Gestion de la mémoire
La mémoire n’est pas infinie Elle doit être allouée et gérée Plusieurs applications sont dominées par leurs besoins de mémoire
Les bugs d’accès mémoire sont pernicieux Les effets sont distants dans le temps et l’espace
Les performances d’accès à la mémoire ne sont pas uniformes
Les accès cache et mémoire virtuelle affectent grandement la performance des programmes
L’adaptation des programmes aux caractéristiques de la mémoire peut amener une grande amélioration de la vitesse d’exécution
sif-1053 47
Erreur d’accès mémoire(voir le projet ErreurAccesMemoire
sur le site ftp du cours)
main (){ long int a[2]; double d = 3.14; a[2] = 1073741824;/*accès fautif ??????????????*/
printf("d = %.15g\n", d); exit(0);}
sif-1053 48
C et C++ ne protègent pas les accès mémoire Références hors limites dans un tableau Valeur invalide de pointeurs Usage abusif des fonctions malloc/free
Peu amener des bugs importants L’effet d’un bug peut se faire sentir ou non dépendant du système et du compilateur
Action à distance Un objet corrompu n’est pas nécessairement relié
logiquement à celui accédé L’effet d’un bug peut être observé longtemps après
avoir été généré
Comment faire alors pour éviter ces problèmes?
Programmer en Java … en LISP ???? Comprendre les interactions possibles au niveau de la mémoire
Utiliser des outils permettant la détection des erreurs de références mémoire
sif-1053 49
RÉALITÉ #4
La complexité asymptotique n’est pas seulement ce qui compte au niveau de la performance
Les facteurs constants sont aussi importants Nous pouvons facilement améliorer la performance d’un programme de l’ordre de 10:1 avec une codification appropriée
L’optimisation doit être faite à plusieurs niveaux: algorithme, représentations des données, procédures, les boucles
La compréhension de l’architecture favorise l’optimisation des performances
Comment les programmes compilent et s’exécutent
Comment mesurer la performance des programmes et identifier les goulots d’étranglement
Comment améliorer la performance sans amputer la modularité du code et la généralité
sif-1053 50
RÉALITÉ #5
Les ordinateurs ne font pas qu’exécuter des programmes
Ils échangent des donnéesLes I/O sont importantes à la fiabilité des programmes et leur performance
Ils communiquent entre eux par réseaux Plusieurs aspects matériels sont à l’avant plan en présence d’un réseauOpérations concurrentes par des
processus autonomesCompatibilité entre plate-forme
sif-1053 51
Exemple d’interaction Logicielle/Matérielle
/* begin hello */
#include <stdio.h>
int main()
{
printf("hello, world\n");
return 0;
}
/* end hello */
Édition du fichier hello.c voir l’annexe de CSA, Microsoft Visual C++ Developer Studio, p. 567
sif-1053 52
Exemple d’interaction Logicielle/Matérielle
sif-1053 53
Exemple d’interaction Logicielle/Matérielle
sif-1053 54
Exemple d’interaction Logicielle/Matérielle
sif-1053 55
Exemple d’interaction Logicielle/Matérielle
sif-1053 56
Exemple d’interaction Logicielle/Matérielle