Chapitre 2 Les Outils Informatiques

publicité
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é
Téléchargement