Introduction à la Micro-informatique Eric T. KOUAM erickouam@gmail.com octobre 2005
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 !
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 ?
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.
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
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…
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 Abbrév: Ki 1 Mébi = « 1 Méga Binaire » = 220 = 1 048 576 Abbrév: Mi… Exemple: 1 Kibi-octet = 1024 octets
Pré-histoire et Histoire de l’Informatique
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)
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
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
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 !
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
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
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!
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)
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 !
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 »
Premier bilan ENIAC (1946, Mauchley et Eckert) Ordinateurs électroniques Arithmétique décimale Programmes câblés Architecture très complexe
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!
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
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) 1 1 0 1 + 0 1 1 0 = 1 0 0 1 1 R + A + B = R’ S S = (A B) R R’ = A.B + R.(A B)
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)
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
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)
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 »
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 Pentium 4 1,7 GHz 42 Mtr 0,18µm 2004 Pentium M 2 GHz 140 Mtr 0,09µm
De la puissance des machines ENIAC Cray 1 Pentium 4 1946 1976 2002 (2GHz) 330 Flops 160 MFlops > 1000 MFlops ? 8 M$ 830 $ 174 kW 60 kW 75 W De plus en plus rapides, de moins en moins coûteuses
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!
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...
Programmation
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. »
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
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
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. »
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 ?
Algorithmes : exemples (2/4) Calcul de la racine carrée de x Exercice : x = 17 (ne garder que 2 décimales)
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)
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 !
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 !!!!
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
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)
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 )
Compilation & Assemblage Le processeur ne connaît que le « code machine » (binaire) Il faut traduire le programme en code machine : compilation(s) & assemblage A chaque « couche » on gagne en puissance mais on perd en rapidité Programme haut-niveau code assembleur code machine
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!)
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
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.
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)
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 !
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
Génie Logiciel Juste pour avoir une idée de ce qui vous attend!
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 »
Description d’un micro-ordinateur
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
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!
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…
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)
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
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
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
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 !
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)
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
Carte graphique L’affichage sur l’écran se fait via une carte disposant de sa propre mémoire. Plusieurs normes :
Communications Port série : envoi des octets bit par bit Port parallèle : envoi octet par octet
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
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)