Introduction a la micro-informatique

publicité
Introduction à la
Micro-informatique
Eric T. KOUAM
[email protected]
octobre 2005
1
Objectifs
• Notions de base sur l’informatique
• Culture générale de l’ingénieur « SI »
Ce cours n’est qu’un rapide panorama :
– beaucoup de notions seront approfondies durant
votre cursus (programmation, archi, système...)
– à vous d’être curieux pour le reste !
2
Quelques définitions (1/3)
Information
Renseignement élémentaire susceptible d’être transmis
et conservé grâce à un support et un code. Une fois
codée, elle devient une donnée.
Exemple de données/information?
Informatique (1962, information et automatique)
Technique du traitement automatique de l’information
au moyen d’ordinateurs.
Science du traitement rationnel de l’information.
Science ou technique ?
3
Quelques définitions (2/3)
Ordinateur
Machine capable d'effectuer automatiquement des
opérations arithmétiques et logiques (à des fins
scientifiques, administratives, comptables, etc.) à
partir de programmes définissant la séquence de
ces opérations.
Réseau
Ensemble d'équipements reliés les uns aux autres par
des câbles ou des faisceaux hertziens, afin qu'ils
puissent échanger, distribuer ou diffuser des
informations et partager différentes ressources.
4
Quelques définitions (3/3)
Internet
Réseau informatique mondial constitué d’un ensemble
de réseaux nationaux, régionaux et privés, reliés par
le protocole TCP/IP.
Ces réseaux coopèrent pour offrir une interface unique
(DNS, routage…)
Applications de l’Internet ?
Bit (Binary digit)
Unité élémentaire d’information (codée), ne prenant
que 2 valeurs différentes (ex: 0 ou 1) et pouvant être
composée pour coder des information plus
complexes
5
Unités de mesures… (1/2)
• L’unité de quantité d’information codée est le bit.
1 octet = 8 bits
• En Anglais, ne pas confondre « bit » et « byte »
– Qu’est-ce qu’un byte?
Le système international des poids et mesures ne
normalise pas le bit et ses multiples! Donc gare
aux confusions…
6
Unités de mesures… (2/2)
• On considère souvent les multiples selon une base
binaire et non une base décimale.
• Norme internationale (bureau des poids et mesures)
1 kilo = 1000, 1 Mega = 106, 1 Giga = 109…
• Usage en informatique
1 Kilo = 1024, 1 Mega = 1024 Kilo = 220, 1 Giga = 230…
• Terminologie CEI (Commission électrotechnique internationale,
rarement appliquée malheureusement)
1 Kibi = « 1 Kilo Binaire » = 210 = 1024
1 Mébi = « 1 Méga Binaire » = 220 = 1 048 576
Exemple: 1 Kibi-octet = 1024 octets
Abbrév: Ki
Abbrév: Mi…
7
Pré-histoire et Histoire de
l’Informatique
8
Calculateurs mécaniques (1/4)
1643 Blaise Pascal
invente la Pascaline,
machine à faire les
additions, soustractions
et a convertir les
monnaies
Lorsqu’un cadran fait un
tour complet, le cadran
suivant est incrémenté
(retenue automatique)
9
Calculateurs mécaniques (2/4)
1679 Leibnitz améliore la Pascaline, en y ajoutant la
multiplication et la division : la calculette est née!
Pose les bases de l’arithmétique binaire
10
Calculateurs mécaniques (3/4)
1820 Charles-Xavier Thomas de Colmar invente
l’arithmomètre. Portable, pratique et facile a utiliser :
1500 exemplaires en 30 ans
11
Calculateurs mécaniques (4/4)
1890 Automatisation du
recensement américain
grâce à la tabulatrice à
cartes perforées de
Hollerith.
Inspirée des métiers à tisser
Jacquard + électricité
Création de la « Tabulated
Machine Company »
Plein de calculateurs
mécaniques jusqu’aux
années 1950 !
12
XIXème siècle
Boole : bases de la logique binaire (1854)
(2 valeurs de vérité, 4 opérations de base)
Babbage : machine a différences
calcul des éphémérides grâce a une suite
d’additions et de soustractions
purement mécanique
sortie : gravure d’une plaque de cuivre !
Calcul sophistiqué mais machine spécialisée
13
La Machine Analytique (1/2)
1833, Babbage : « un
calculateur universel »
1. Entrée (programme)
2. Unité de commande
3. « Magasin » (mémoire)
4. « Moulin » (calcul
élémentaire, UAL)
5. Sortie
14
La Machine Analytique (2/2)
Une conception trop en
avance! Problèmes de
technologie : la
machine ne fonctionna
jamais.
Assisté de Lady Ada
Lovelace, première
programmeuse!
15
Les prémisses…
1906 invention du « tube à vide » (interrupteur
électronique)
1936 Alan Turing théorise un calculateur programmable
Zuse construit le 1er calculateur à relais
1938 Claude Shannon invente le bit (binary digit)
1944 Aiken construit la machine analytique avec des
relais électromécaniques (1 opération / 6 secondes)
16
Deuxième Guerre Mondiale
Le défi Enigma (1943)
• décryptage des communications des sous-marins
allemands par l’armée britannique
• construction et utilisation de Colossus, conçu par le
mathématicien Alan Turing
• avantage décisif pour la marine
• technologie secrète pdt 30 ans
Premier ordinateur électronique !
17
Deuxième Guerre Mondiale (suite!)
ENIAC (1946, Mauchley et Eckert)
• Electronic Numerical Integrator And Computer
• Calculs balistiques pour l’armée américaine
• 42 armoires de 3m de haut, 80m², 174kW
• 18000 tubes à vide, 1500 relais
• Programmation par « câblage » et 6000
commutateurs
• 330 multiplications/s
• Publication de l’ENIAC
• Premier « bug »
18
Premier bilan
ENIAC (1946, Mauchley et Eckert)
• Ordinateurs électroniques
• Arithmétique décimale
• Programmes câblés
• Architecture très complexe
19
John Von Neumann
Mathématicien génial ayant participé à l’ENIAC
Proposition de Von Neumann
=
Représentation numérique des programmes
+ Arithmétique binaire
+ Architecture en quatre parties
Mémoire (données et programme), UAL, UC, E/S
A la base de (presque) tous les ordinateurs modernes!
20
Pourquoi le binaire? (1/2)
1 chiffre = un état électrique « tout ou rien » (simple, fiable)
Opérations logiques faciles à réaliser électroniquement
ET : série
OU : parallèle
NON : inversion d’état
21
Pourquoi le binaire? (2/2)
Les nombres se représentent facilement en binaire.
Opérations arithmétiques réalisables grâce aux opérations
logiques.
Exemple : l’addition (13+6 = 19)
R
+ A
1101
+ B
+ 0110
= R’ S
= 10 0 1 1
S = (A  B)  R
R’ = A.B + R.(A  B)
22
La suite…
1947 Le transistor (Bell labs, Shockley, Brattain et
Bardeen)
1950 L’assembleur remplace la programmation binaire
1958 Circuit intégré ou « puce » (Robert Noyce)
1964 System/360 d’IBM: création d’une gamme
d’ordinateurs compatibles (de 33000 +/s à 2,5M+/s)
23
Le 1er microprocesseur
1971 Intel intègre sur une seule puce l’« unité
centrale » (unité de contrôle, UAL et registres)
Petit nom : I 4004
Caractéristiques :
12mm², 2300 transistors 10µm
16 broches, 108KHz
4 bits
Début des micro-ordinateurs
24
Microordinateurs
1973 Grenelle et Truong [Efrei59] créent le premier
micro-ordinateur pour l’INRA: le MICRAL
1975 Création de Microsoft (Paul Allen et Bill Gates)
1976 Apple I (Steve Jobs et Steve Wozniak)
25
Hégémonie du PC
1981 IBM (en retard!) lance son micro-ordinateur,
baptisé IBM PC (Personal Computer), basé sur le
processeur Intel 8088 4,77MHz, 16 Ko de mémoire
vive, un lecteur 5"1/4… + MS-DOS !
« poids d’IBM » : standard industriel !
1983 Arrivée des « compatibles PC »
1985 IBM perd le contrôle du marché PC!
Actuellement
Architecture « Wintel »
26
Evolution des Microprocesseurs
1971 4004
108 kHz
2.300 transistors
10µm
1978 8086
4,77 MHz
29.000 tr
3µm
1982 80286
12 MHz
134.000 tr
1,5µm
1985 80386
16 MHz
275.000 tr
1,5µm
1989 80486
25 MHz
1,2 Mtr
1µm
2002 Pentium 4
1,7 GHz
42 Mtr
0,18µm
2004 Pentium M
2 GHz
140 Mtr
0,09µm
27
De la puissance des machines
ENIAC
1946
330 Flops
?
174 kW
Cray 1
1976
160 MFlops
8 M$
60 kW
Pentium 4
2002 (2GHz)
> 1000 MFlops
830 $
75 W
De plus en plus rapides, de moins en moins coûteuses
28
La loi de Moore
« Le nombre de transistors intégrés sur une puce
double tous les 18 mois. » (Gordon Moore, 1965)
• Des processeurs et mémoires de plus en plus
puissants, de moins en moins chers
• Jusqu’à quand ?... 2010 ?... 2020 ?
• Économiquement : cercle vertueux
MAIS : première loi de Nathan sur les logiciels
(et leurs utilisateurs…)
« loi » de Gates… gare aux prédictions!
29
Où est l’informatique maintenant ?
Partout !
Entreprises : comptabilité, gestion des ressources
Personnelle : budget, jeux, bureautique
Applications critiques : transports, nucléaire,
spatial…
Et aussi : voitures, électroménager « intelligent »,
cartes à puces, téléphones portables, PDA...
30
Programmation
31
Ainsi parlait Dijkstra… (1930-2002)
« Alan Turing thought about criteria to settle the
question of whether machines can think, a
question of which we now know that it is about
as relevant as the question of whether
submarines can swim. »
« Computer Science is no more about computers
than astronomy is about telescopes. »
32
Programmation
Un ordinateur est fait pour être programmé : il
faut lui dire ce qu’il doit faire
L’humain programme la séquence des
opérations à effectuer, l’ordinateur exécute.
L’exécution est un processus automatique,
« facile », mais rapide et fiable
33
Qu’est-ce qu’un processeur
sait faire ?
1. Lire et écrire en mémoire (RAM, graphique, E/S)
2. +, -, , /, logique binaire...
3. Passer à l’instruction suivante
4. Aller directement à une autre instruction
5. Aller à une autre instruction SI …
bien peu… mais très rapidement et sans erreur
34
Que programmer ?
Programme = résolution d’un problème
Pour chaque type de problème on conçoit un
algorithme
Algorithme : méthode détaillée de résolution
d’un problème.
« Ensemble des règles opératoires
nécessaires à l’accomplissement d’une
tâche. »
35
Algorithmes : exemples (1/4)
Calcul du maximum de a et b
Si a est plus grand que b alors rendre a
Sinon rendre b
et si a = b ?
36
Algorithmes : exemples (2/4)
Calcul de la racine carrée de x
Exercice : x = 17 (ne garder que 2 décimales)
37
Algorithmes (3/4)
Vous connaissez des algorithmes pour…
1. Maths : +, -, , , résolution d’équations 1er et
2ème degrés…
2. Vie quotidienne…
L’algorithme type : la recette de cuisine
(ingrédients, produit, étapes, sous-étapes,
savoir-faire)
38
Algorithmes : bases (4/4)
Variable : stocke une valeur à la fois (affectation/lecture)
Séquence : suite d’instructions à exécuter
Boucle : ensemble d’instructions à répéter
Condition : test d’une propriété booléenne, deux suites
possibles (« si vrai » et « si faux »)
Sous-programme/fonction : étape séparée, porte un
nom, a des paramètres et peut renvoyer des résultats
cf. le cours de programmation en C bientôt !
39
Programmer...
Mettre en œuvre un algorithme
(implémentation)
L’algorithme doit être suffisamment détaillé pour
être au niveau de la machine
Il doit être écrit comme une suite d’instructions
pour le processeur
 code binaire !
Non mais ça va pas non !!!!
40
Langage de programmation
Terrain d’entente entre l’ordinateur et le
programmeur pour spécifier les tâches à faire
Programmeur : langue natale (+ 1 ou 2…)
Ordinateur : langage binaire (« machine »)
Langage : mots-clés, ensemble de règles de
syntaxe et de grammaire. Traduit en langage
machine
41
Langages de programmation
Assembleur (1950) : « bas-niveau » (une
instruction en assembleur = une instruction
processeur) mais plus facile à utiliser
(mnémoniques). Peu lisible
Une instruction assembleur =
une opération (que faire?)
une ou deux opérandes (sur quoi?)
Ex : ADD AX, BX (AX + BX, résultat dans AX)
42
Langages impératifs haut niveau
Programmes séquentiels « Von Neumann »
Syntaxe plus abstraite (indépendante de l’UC)
1 instruction = multiples instructions processeur.
Premier : Fortran (Formula Translation), maths
Best of: Pascal, C (le standard)... Cobol encore
z := 1;
repeat
y := z ;
z := 0.5 * ( y + x / y ) ;
until ( abs(y - z) < erreur )
43
Compilation & Assemblage
Le processeur ne connaît que le « code
machine » (binaire)
Il faut traduire le programme en code machine :
compilation(s) & assemblage
Programme
haut-niveau
code
assembleur
code machine
A chaque « couche » on gagne en puissance
mais on perd en rapidité
44
Autres paradigmes (1/4)
Résoudre certains problèmes  raisonner 
Se libérer du « modèle d’exécution » Von Neumann
Langages fonctionnels : programme = fonction,
compositions de fonction, récursion
Proche du langage mathématique : facilite
l’approche de problèmes réputés complexes
Best of: LISP (historique), Caml/Ocaml (le meilleur!)
45
Autres paradigmes (2/4)
Langages logiques : programme = « faits » et
règles
Le programme décrit un « univers » (connaissances)
On cherche ensuite à prouver quelque chose dans
cet « univers » : basé sur la logique mathématique
Ex : Prolog
Extension importante : contraintes numériques
Utilisation : intelligence artificielle, manipulation de
données symboliques complexes
46
Autres paradigmes (3/4)
parent(jean,marie).
parent(jean,yann).
homme(jean).
homme(yann).
frere(X,Y):- parent(Z,X), parent(Z,Y), homme(X).
?- frere(A, B).
A = yann, B = marie
;
A = yann, B = yann.
47
Autres paradigmes (4/4)
Langages de spécification formels
 Spécification en langage mathématique : pas de phrase!
 On exprime mathématiquement ce qui doit être garanti
 On passe de la spécification au programme par une suite
d’opérations complexes et codifiées.
 Tout est prouvé mathématiquement
 Très fastidieux et réservés à des experts
Utilisation : applications « critiques » à fort enjeu
Exemples : méthode B, Coq, PVS...
Application récente : Météor (RATP/Matra Transport)
48
Choix du langage
A chaque problème correspond un ou plusieurs
langages adaptés.
 Un programmeur doit maîtriser plusieurs
langages différents !
Critères de choix : connaissance, facilité de
développement, rapidité d’exécution, facilité
de maintenance
Langages les plus répandus : C, C++, Java…
Cobol et Fortran !
49
Vie d’un logiciel
Spécification : qu’est-ce qu’on veut faire ?
Analyse : comment va-t-on le faire
Développement : programmer ce qui est spécifié
en se basant sur l’analyse
Test : vérifier (et corriger) ce qui est programmé
( confiance  certitude)
Utilisation  Maintenance
50
Génie Logiciel
Juste pour avoir une idée
de ce qui vous attend!
51
Musée des horreurs…
L’informatique, ce n’est pas si simple que ça!
• Anecdotes de Michael Leuschel (Univ. de
Southhampton)
• 20.000 lieues sous les mers!
– La « safe torpedo »
52
Description d’un
micro-ordinateur
53
Configuration externe (base)
Ce que l’on voit de l’extérieur…
• Un boîtier (abusivement « unité centrale »)
• Un clavier
• Une souris
• Un moniteur
• Lecteurs de disquettes, CD-ROM, DVD…
• Un ensemble de prises (connecteurs) à
l’arrière
54
Configuration externe (options)
•
•
•
•
•
•
•
Imprimante
Scanner
Graveur CD-ROM ou CD-RW
Lecteur ZIP ou DAT (archivage)
Modem
Webcam
Hauts-parleurs
Et plein d’autres choses!
55
Configuration interne
La carte mère
•
•
•
•
Le processeur (CPU ou unité centrale)
Horloge
RAM (barrettes)
Bus (communication) : ISA, PCI, SCSI, AGP, USB…
Cartes d’extension
• Carte vidéo (contrôle de l’écran, sous-traitance)
• Carte son
• Contrôleur de disque…
56
Architecture générale
• Unité centrale
• Mémoire « principale »
• Périphériques (mémoires secondaires,
moniteur, clavier, carte son…) et leur
contrôleur
• Bus (communications entre les éléments)
(cf. schéma)
57
Unité centrale
•
•
•
•
•
•
•
Il s’agit du microprocesseur
Leader : Intel, outsider : AMD
Ventilateur pour le refroidir
+ de 5 millions de transistors
Très haute technologie
Travail par cycle, cadencé par une horloge
UAL (calculs), UCT (traitement), registres
58
Carte mère
le microprocesseur et
l'horloge
un coprocesseur dédié aux
calculs arithmétiques
la mémoire vive
les bus (lesquels ?)
les slots d'extension (fentes)
pour accueillir les cartes
59
Le(s) bus (1/3)
• Relient entre eux les éléments de l’ordinateur
• 3 parties : données, adresse, commande
• Plusieurs types de bus :
– 1981 : ISA, bus 8 bits, 20 bits d’adresse
– EISA : 16 bits et + de bits d’adresse! 5
Mo/s
– Exigences du multimédia : bus PCI conçu
par Intel (domaine public) : grand succès.
130 Mo/s max
60
Le(s) bus (2/3)
Bus PCI : performant mais coûteux
Bus USB (Universal Serial Bus) : pour les
périphériques « peu rapides », conception
concertée entre plusieurs industriels
(Compaq, IBM, Intel, Microsoft…), faible coût,
bus et alimentation électrique intégrés dans
le même câble 1,5 Mo/s
Bus AGP : rapides (graphique) 2Go/s
A chaque type de périphérique son bus !
61
Le(s) bus (3/3)
Bus PCI : performant mais coûteux
Bus USB (Universal Serial Bus) : pour les périphériques
« peu rapides », conception concertée entre plusieurs
industriels (Compaq, IBM, Intel, Microsoft…), faible coût,
bus et alimentation électrique intégrés dans le même
câble 1,5 Mo/s
Bus AGP : rapides (graphique) 2Go/s
A chaque type de périphérique son bus !
IEEE1394 (Firewire): haute performance (< 3200 Mbit/s)
62
Exemple: l’USB
• Apporte l’alimentation électrique (5V, 100mA)
• Bus série
• Possibilité de chaîner 127 périphériques
(système de « jeton », découpage en ms)
• Branchement à chaud: détection du
périphérique, attribution d’un numéro (@),
identification
• USB 1, 1.1 (12Mb/s), 2
63
Carte graphique
L’affichage sur l’écran se fait via une carte disposant de
sa propre mémoire. Plusieurs normes :
standard
monochrome
Hercules
CGA
EGA
VGA
8514/A
XGA
SVGA
UXGA
résolution
couleurs
80 x 25 caractères
1
720 x 350 pixels
1
320 x 200 pixels
4
640 x 350 pixels
16
640 x 480 pixels
16 à 256
1024 x 768 pixels
256
1024 x 768 pixels
65536
1024 x 768 pixels et + 256/65536/16 M
1600x1200
16 M
date
x
x
1981
1985
1987
1987
1990
1990
64
Communications
Port série : envoi des octets bit par bit
Port parallèle : envoi octet par octet
65
Mémoires de masse
Disques durs, lecteur CD-ROM, DVD…
Contrôleurs spécialisés : IDE (< 528Mo), EIDE, SCSI-1
(5 Mo/s), Ultra SCSI (40 Mo/s)
Cf. cours sur les mémoires
66
Réseau
• Un ordinateur peut être connecté à d’autres
par l’intermédiaire d’un réseau
• Les données transitent d’un ordinateur à
l’autre à l’aide d’un protocole (ex: TCP/IP)
67
Téléchargement