c M Dunseath-Terao et K Dunseath 7 Chapitre 2 Les Outils Informatiques 2.1. L’architecture des ordinateurs Tous les ordinateurs comportent – un ou plusieurs processeurs ; – de la mémoire ; – un ou plusieurs supports de stockage (disques durs, CD, . . .) ; – des interfaces avec les utilisateurs (écrans, claviers, souris, imprimante, microphone, . . .) 2.1.1. Les processeurs Appelé aussi unité centrale (cpu = central processing unit), le processeur est composé d’une très grande quantité de circuits intégrés et exécute des programmes en réalisant des opérations arithmétiques ou logiques sur des données. C’est la seule composante qui crée de nouvelles informations en combinant ou en modifiant des informations existantes. La vitesse d’un processeur peut être mesurée en – Cycle horloge = unité de temps la plus courte pour une opération. L’unité est le Hertz (Hz), les processeurs modernes atteignent des vitesses de l’ordre du Gigahertz (GHz). – Nombre d’instructions par seconde (mips = millions instructions per second). Une instruction est une tâche exécutée par le processeur. – Nombre d’opérations flottantes par seconde (flops = floating point operations per second). Une opération flottante est une opération effectuée sur des nombres réels. Une opération prend au moins un cycle mais certains processeurs sont capables d’exécuter plusieurs opérations de types différents simultanément. On remarque que les opérations flottantes prennent souvent plus de temps que les opérations sur des entiers. L’opération de division prend beaucoup plus de temps (13-17 cycles horloge) que les opérations d’addition et de multiplication (4 cycles). Chapitre 2 Les Outils Informatiques 8 Un processeur comprend – une unité de contrôle : comprenant d’une part un registre d’instruction contenant sous forme numérique l’action à exécuter, d’autre part un compteur avec l’adresse de l’instruction suivante à exécuter. – des registres de données : zone mémoire suffisante pour stocker un nombre. On distingue les registres réels et les registres entiers. – des unités arithmétiques/logiques : exécutant les instructions entières, réelles ou logiques. Chaque unité a en plus ses propres registres. L’exécution d’un programme entraı̂ne les 4 étapes suivantes : 1. Charger dans le registre d’instruction le contenu de la mémoire dont l’adresse est fournie par le compteur ; 2. Décoder et exécuter l’action spécifiée dans le registre d’instruction ; 3. Incrémenter le compteur de manière à ce qu’il pointe vers l’instruction suivante ; 4. Retourner à l’étape 1. Un programme est donc une longue liste d’instructions numériques. Cette liste est stockée dans une zone particulière de la mémoire. Au début de l’exécution du programme, le compteur est initialisé à la première adresse de cette zone (ou entry point). Le CPU exécute ensuite les instructions du programme. Certaines instructions peuvent modifier le compteur et donc l’adresse de l’instruction suivante à exécuter. Le programme n’est donc pas nécessairement exécuté d’une manière linéaire, il peut sauter des instructions ou revenir en arrière et les répéter. Il peut même sortir de la zone mémoire (appel de sous-routines) et y revenir. A la fin d’une exécution, le compteur est chargé avec l’adresse d’un programme du système qui libère la zone mémoire pour l’exécution d’autres programmes. On distingue différents types de processeurs : 1. Processeurs scalaires : – Processeur CISC : “Complex Instruction Set Computer”, processeur “classique”, volontairement compliqué mais qui accède moins souvent à la mémoire. Exemples : AMD Athlon, Intel Pentium, ... – Processeur RISC : “Reduced Instruction Set Computer”, processeur ayant un jeu limité d’instructions de longueurs égales, mais exécutés très rapidement. Les processeurs RISC sont plus efficaces et sont capables d’effectuer plusieurs instructions par cycle d’horloge (processeurs super scalaires). Exemples : IBM Power2 et Power PC, MIPS R12000 (Motorola), . . . 2. Processeurs vectoriels : – capables d’exécuter une instruction sur un vecteur d’opérands. – Exemples : Cray, Fujitsu, NEC, . . . Chapitre 2 Les Outils Informatiques 9 Performances en Mflops de quelques processeurs et ordinateurs Résolution d’un système de n équations linéaires (LINPACK Benchmark) http ://www.netlib.org/benchmark/performances.ps par Jack J. Dongarra Processeurs NEC SX-6 Futjitsu VPP 5000 IBM eServer pSeries 690 Turbo 1.3 GHz IBM RS/6000 SP Power 3 375 MHz Intel P4 2.53 GHz Intel Itanium 800 MHz Sun Ultra SPARC III 750 MHz Ordinateur NEC SX-6/8 (8 processeurs) Cray T932 (4 processeurs) Cray T932 (32 processeurs) Theoretical Peak 8000 9600 5200 1500 5060 3200 1500 Theoretical Peak 64000 7200 57600 n = 1000 n = 100 7575 8784 1161 1156 1208 2355 2282 769 424 1190 580 343 n = 1000 41520 5735 29360 2.1.2. La mémoire La mémoire est composée de circuits intégrés. On en distingue plusieurs types : – RAM (random access memory), accessible en lecture et en écriture – ROM (read only memory), accessible en lecture seulement – PROM (programmable read only memory) La plus petite unité de stockage est le bit, qui peut prendre les valeurs 0 ou 1. Un byte ou octet est composé de 8 bits. La mémoire peut être compartimentée en blocs (typiquement 512 octets) ou pages (4096 octets). Elle est organisée suivant l’hiérarchie suivante : 1. cache de niveau 1 : mémoire située dans le cpu, très rapide (temps d’accès ∼ 10 nsec) mais d’un coût très élevé. Typiquement, un cpu a une cache de 128 Ko à 256 Ko. 2. cache de niveau 2 (optionnelle) : mémoire située sur la carte mémoire et qui forme un espace tampon (buffer ) entre le cpu et la mémoire primaire. 3. mémoire primaire : moins rapide que la mémoire cache (temps d’accès ∼ 60-70 nsec), mais moins coûteuse et donc plus abondante (typiquement de 128 Mo à 256 Mo pour un PC, un Go pour une station de travail et jusqu’à plusieurs centaines de Go pour les gros serveurs de calcul). Chapitre 2 Les Outils Informatiques 10 L’information entre les différents modules (cpu, mémoire, . . .) est transférée par des bus. Le taux de transfert est appelé band width, il est mesuré en bits/sec ou bps et peut varier de 10 Mbps à 500 Mbps. 2.1.3. Les disques Les disques durs sont des zones de stockage de données sur des supports magnétiques, qui peuvent être accédés en lecture ou en écriture. La taille d’un disque varie entre 20 Go et plusieurs centaines de Go, avec des temps d’accès entre 8 et 12 msec. Le taux de transfert sur disque est de l’ordre de 80 Mbps. Les CD ont une capacité d’environ 800 Mo. 2.2. Les logiciels 1. Le système d’exploitation : Operating System (OS) Exemples : Mac/OS (Macintosh), Windows, Unix (Linux), . . . L’Unix est un OS globalement indépendent de l’architecture de la machine. 2. Les langages de programmation : – Fortran (Formula Translation), adapté pour le calcul scientifique intensif. A l’heure actuelle Fortran90 est la version standard. – C, C++ – Pascal (utilisé en pédagogie) – Lisp (intelligence artificielle) – ADA – Perl – Java – ... 3. Les interfaces graphiques : – Ils jouent un rôle important pour le confort de l’utilisateur (Exemples : X-windows, KDE, Gnome, Windows, . . .). – Ils permettent l’interprétation rapide de nombreux résultats (Exemples : xmgr, Data Explorer, AVS, PV-Wave,. . .). 4. Les communications : – TCP/IP (Transmission Control Protocol/Internet Protocol ) : – FTP (File Transfer Protocol ) : transfert de fichiers – Telnet, rlogin : connection à distance – Remote command : commande à distance – Modem : PPP (Point to Point Protocol ) – HTTP (hypertext transfer protocol) : pour les serveurs et browsers web Chapitre 2 Les Outils Informatiques 11 5. Les outils de calcul symbolique – Exemples : Mathematica, Matlab, Maple, Macsima, . . . – manipulent des chaı̂nes de caractères plutôt que des entiers ou des réels – sont utiles pour l’évaluation analytique de séries, intégrales, dérivées, réduction de polynômes et recherche de racines, manipulation de matrices . . . – fonctionnent aussi en mode numérique – offrent une visualisation graphique des résultats 6. Les bibliothèques scientifiques – souvent optimisées pour une machine – des versions parallèles sont souvent disponibles – assurent une meilleure portabilité des codes – Exemples : – BLAS (Basic Linear Algebra Subroutines) – EISPACK (Eigensystem Subroutine Package), LINPACK (Linear Package), LAPACK (Linear Algebra Package) – Bibliothèques commerciales (NAG, ESSL, . . .) – STAT (bibliothèque statistique) Quelques informations sur l’ordinateur utilisé en TP – PC à 2 processeurs Intel Pentium II, 400MHz, 512 Ko cache, 192 Mo mémoire – Disques : /home : 3Go, /etu : 9Go – Système d’exploitation : LINUX kernel 2.2.13, distribution Mandrake, interface graphique KDE. Chapitre 2 Les Outils Informatiques 12 2.3. Programmation 1. Pourquoi écrire ses propres programmes ? – On ne trouve pas toujours sur le marché un programme adapté à la résolution d’un problème particulier – On peut ne pas avoir confiance dans la méthode ou dans le programme et on désire les vérifier par une autre méthode ou un autre programme – La connaissance des principes de programmation et des limitations des programmes permet de mieux comprendre les logiciels et d’en retirer le maximum – On veut devenir programmeur – Par pure curiosité scientifique, on désire comprendre comment un ordinateur et un programme fonctionnent, plutôt que de simplement accepter les résultats ! 2. Comment écrire un bon programme ? Les vertus cardinales d’un bon programme sont A. Clarté du code – Utiliser des noms de variables descriptifs – Ajouter des indentations pour mettre en évidence la structure du code – Documenter le code par des commentaires utiles : objectif du code, nom de l’auteur, date de dernière mise à jour, description des tâches effectuées, . . . – ... B. Facilité d’utilisation – Simplicité et clarté des données d’entrée – Vérification de la validité des données d’entrée – Messages d’erreur compréhensibles – Simplicité et clarté dans l’impression des résultats – Portabilité