5.1 Organisation des systèmes informatiques
Objectifs d'apprentissage
À la fin de cette section, vous serez capable de :
- Définir un système informatique
- Expliquer comment l'information est stockée et transférée dans un système informatique
- Distinguer les programmes de haut niveau des programmes de niveau machine
- Identifier les éléments d'un système informatique typique
À la base, un système informatique (computer system) est un appareil électronique qui effectue des calculs. Ces calculs apparaissent au monde extérieur comme l'exécution de programmes. Lorsque vous jouez à un jeu, écoutez une chanson ou naviguez sur le Web, vous demandez à votre ordinateur d'effectuer des calculs. Vous vous demandez peut-être comment l'ordinateur fonctionne et comment les calculs effectués, tels que la navigation sur le Web ou l'écoute d'une chanson, sont liés les uns aux autres ?
Commençons par la deuxième partie de cette question : la relation entre le calcul et l'exécution d'un programme. Une chanson numérisée pour le stockage est en fait un ensemble de nombres que l'ordinateur lit ; il produit du son basé sur ces nombres. L'ordinateur doit calculer (c'est-à-dire effectuer des calculs sur) la fréquence et le volume du son en fonction des nombres lus. Un autre exemple est lorsque vous ouvrez un navigateur et tapez l'adresse d'un site Web. L'ordinateur lit ce que vous avez tapé sur le clavier et utilise les capacités du réseau pour le traduire en un long nombre appelé adresse IP (Internet Protocol) (Figure 5.2). L'adresse IP se compose de plusieurs chiffres, similaires à votre numéro de téléphone, qui permettent aux données d'atteindre votre ordinateur via Internet et aux autres ordinateurs sur Internet de reconnaître votre ordinateur. Votre ordinateur transmet cette adresse IP via Internet à un autre grand ordinateur pour demander le contenu du site Web requis, reçoit le contenu de ce grand ordinateur et exécute un logiciel de navigation qui le traduit en contenu tel que des images, des sons et des animations à l'écran. Toutes ces étapes impliquent des calculs. Mais comment l'ordinateur fait-il tout cela ? Pour répondre à cette question, nous devons d'abord connaître les composants d'un système informatique.
Systèmes informatiques
Un système informatique se compose de deux parties principales : le matériel (hardware) et le logiciel. Le matériel comprend les composants physiques du système informatique, tels que les disques durs, les cartes mères et les puces de processeur. Le logiciel se compose des programmes que vous exécutez, tels que les lecteurs multimédias ou les navigateurs Web, et des données nécessaires au fonctionnement de ces programmes. Par exemple, le lecteur multimédia est un programme, et les chansons que vous écoutez à l'aide du lecteur multimédia sont des données. Ainsi, le matériel exécute des programmes qui sont alimentés en données. Les ordinateurs se présentent sous différentes formes, des petits que l'on trouve dans votre montre connectée, par exemple, aux grands superordinateurs. Différents ordinateurs peuvent avoir des composants différents en plus de ceux qui existent dans toutes les formes d'ordinateurs. Les ordinateurs plus grands, les centres de données et les superordinateurs nécessitent des composants supplémentaires pour obtenir des données de plusieurs sources, des pièces plus sophistiquées pour se connecter à Internet et des équipements de refroidissement. Les mainframes créés il y a quelques décennies sont de grands ordinateurs utilisés à des fins différentes. Vous n'en avez pas besoin dans votre smartphone.
Stockage des données dans un ordinateur
Tous les programmes et leurs données correspondantes sont stockés dans un ordinateur ou téléchargés depuis Internet. Alors, comment ces programmes et ces données sont-ils stockés ? Et comment un ordinateur les comprend-il et les exécute-t-il ? Les ordinateurs ne comprennent pas l'anglais ni d'autres langues naturelles ; ils ne peuvent se rapporter qu'à des chaînes de 1 et de 0 et, par conséquent, tous les programmes et données doivent être stockés dans l'ordinateur sous forme de séquence de 1 et de 0. Un 1 ou un 0 est appelé chiffre binaire ou bit (bit). Chaque unité de 8 bits est appelée un octet (byte). C'est à peu près ainsi que fonctionnent les ordinateurs qui dépendent de l'électricité. D'autres types, encore non commercialisés mais en phase de conception et de test, tels que les ordinateurs quantiques, n'utilisent pas de bits mais quelque chose d'autre appelé bits quantiques ou qubits.
Si nous disons qu'un programme d'édition de texte occupe 1 mégaoctet de stockage, cela signifie que l'éditeur est stocké à l'intérieur de l'ordinateur, plus précisément sur le disque (disk) de votre ordinateur, qui est un mécanisme de stockage (storage) de données, sous forme d'une séquence de près d'un million d'octets (1 mégaoctet est un peu plus grand qu'un million d'octets). Nous appelons un programme stocké dans un ordinateur un exécutable (executable). Puisque les programmes et les données sont stockés sous forme de séquence de bits ou d'octets, quelle est la différence entre un programme et les données ?
Réfléchissez
Pourquoi apprendre les systèmes informatiques ?
Que vous souhaitiez être un développeur de logiciels, un programmeur ou un concepteur de matériel, ou même utiliser efficacement n'importe quel système informatique, vous avez besoin d'une connaissance minimale de l'organisation des ordinateurs. Vous devez savoir ce que sont les différentes pièces des systèmes informatiques (computer systems), comment elles interagissent et à quelle vitesse chaque pièce fonctionne. Connaître le fonctionnement interne des ordinateurs vous aide à écrire des logiciels plus efficaces, à concevoir des ordinateurs de différentes tailles (comme celui de votre montre, celui de votre téléphone ou de grands superordinateurs) et à prendre les meilleures décisions lors de l'achat d'un ordinateur.
Programmes d'application et exécutables
Les programmes que nous utilisons dans nos systèmes informatiques, appelés applications (applications), ont été conçus et écrits par des développeurs de logiciels à l'aide de langages informatiques, également appelés langages de haut niveau (HLL). Les HLL ont été conçus pour faciliter l'interaction entre les développeurs de logiciels et les ordinateurs. Cependant, les ordinateurs ne comprennent pas les HLL. Les ordinateurs ne comprennent que les 1 et les 0. Il existe donc un ensemble de programmes conçus pour traduire les programmes écrits en HLL en 1 et 0 que les ordinateurs peuvent comprendre. Les programmes écrits par les développeurs de logiciels sont traduits en un ensemble d'instructions telles que : « Ajouter le nombre 1 au nombre 2 et enregistrer le résultat comme nombre 3. » Ces instructions sont stockées sous forme de série de 1 et de 0. Chaque groupe de ces 1 et 0 représente une seule instruction. Toutes les instructions, dans leur représentation en 1 et 0, sont stockées dans un fichier appelé fichier exécutable sur le disque.
Lorsque vous cliquez sur une icône ou tapez une commande, le système d'exploitation, un logiciel dont le rôle est de gérer l'interaction entre l'utilisateur de l'ordinateur, le matériel et les programmes, charge l'exécutable du stockage vers la mémoire de l'ordinateur. À ce stade, l'ordinateur est prêt à commencer l'exécution du programme. Figure 5.3 montre les étapes d'écriture de programmes, dans divers HLL par des développeurs de logiciels, puis la traduction de ces programmes en un exécutable (la représentation du programme en 1 et 0) à l'aide d'une chaîne d'outils logiciels spéciale (Figure 5.3). Ce logiciel spécial qui traduit les HLL en exécutables comprend des outils appelés compilateurs, assembleurs et éditeurs de liens. Nous ne discuterons pas de ces outils ici (référez-vous à 5.2 Niveaux d'abstraction des ordinateurs et 5.4 Représentation des programmes de niveau machine), mais nous savons maintenant ce qu'ils font. Ici, nous examinerons comment le matériel exécute les instructions.
Organisation matérielle des systèmes
Une fois l'exécutable en mémoire, le matériel doit effectuer plusieurs opérations pour l'exécuter. Rappelons qu'un exécutable est un groupe d'instructions sous forme de 1 et de 0. Le matériel doit d'abord récupérer une instruction de la mémoire en la transférant de la mémoire vers le CPU, qui est le cerveau de l'ordinateur et qui exécute les instructions d'un programme. Une fois l'instruction récupérée de la mémoire et stockée dans un emplacement de stockage temporaire à l'intérieur du CPU, appelé registre, le CPU décode cette instruction ; c'est-à-dire qu'il déchiffre ou comprend la signification des plusieurs 1 et 0 qui constituent l'instruction. Par exemple, le programme logiciel peut contenir une instruction telle que « ajouter ce nombre x au nombre y et placer le résultat dans z. » Puisque les ordinateurs ne comprennent pas l'anglais, cette instruction est stockée à l'intérieur de l'ordinateur sous forme de 1 et de 0. Le CPU doit lire ces 1 et 0, comprendre ce qu'ils signifient (c'est-à-dire les décoder), puis les exécuter.
Une fois l'instruction décodée, le CPU ordonne à l'unité arithmétique et logique (ALU) (arithmetic logic unit (ALU)) de l'exécuter. L'ALU est le composant matériel à l'intérieur du CPU qui effectue des calculs et des opérations logiques telles que des comparaisons. Une fois l'instruction exécutée, le résultat est enregistré dans un registre ou renvoyé à la mémoire. Le CPU est maintenant prêt à récupérer l'instruction suivante. Figure 5.4 montre le matériel d'un système informatique. À l'intérieur du CPU, nous pouvons voir l'ALU, un groupe de registres (appelé un fichier de registres (register file)), et un composant matériel, appelé contrôleur de mémoire, qui aide le CPU à communiquer avec la mémoire. À l'intérieur du CPU, nous trouvons également un stockage rapide, plus rapide que la mémoire mais plus lent que le registre (register), appelé mémoire cache. Nous discuterons de la mémoire cache dans 5.5 Hiérarchie de mémoire.
Un dernier composant matériel à l'intérieur du CPU est l'interface d'E/S. L'interface d'entrée-sortie (I/O) (input/output (I/O)) aide le CPU à communiquer avec les autres périphériques d'E/S tels qu'un clavier ou une souris. Toutes les pièces — CPU, mémoire, carte graphique — sont connectées via un ensemble de fils appelé bus (bus). Le but d'un bus est de transférer des données entre les différentes pièces de l'ordinateur. Les bus peuvent différer en vitesse, ce qui affecte la rapidité du transfert des données. Figure 5.4 utilise le mot générique interconnexion pour désigner les bus. Nous pouvons ajouter d'autres périphériques au système informatique (computer system), comme un écran différent, via des emplacements d'extension.
Lien interactif
Lisez cette histoire concise des ordinateurs à partir du XIXe siècle pour voir comment les ordinateurs ont évolué et ont été développés au fil du temps.
Périphériques d'entrée-sortie
Le rôle des périphériques d'entrée-sortie (I/O) (input/output (I/O) devices) est de prendre une entrée d'un utilisateur (c'est-à-dire taper sur un clavier ou parler dans un microphone), de la transformer en 1 et 0, et de stocker cette information en mémoire. Il prend également des 1 et 0, générés par un type de programme logiciel, de la mémoire et les traduit dans un format de sortie tel qu'une image à l'écran ou un son provenant d'un haut-parleur. Les différents périphériques ont des vitesses différentes et des façons variées de transformer l'entrée et la sortie en/depuis des 1 et des 0.
Tout périphérique d'E/S, votre clavier par exemple, se connecte au système informatique à l'aide d'une interface telle qu'un port USB que l'on trouve dans tous les ordinateurs. Le contrôleur USB montré dans la Figure 5.4 est le composant matériel qui gère le port USB et lui permet de détecter qu'un périphérique a été connecté. Un autre composant important du matériel (hardware) est la mémoire principale.
Mémoire principale
Pour que le CPU exécute des programmes et traite les données stockées localement, il doit les obtenir du disque de l'ordinateur. Mais un disque est très lent. Ainsi, le CPU prend ce dont il a besoin du disque et le stocke temporairement dans un stockage (storage) plus rapide appelé mémoire principale (main memory) ou mémoire vive (RAM) (random access memory (RAM)). Lorsque vous achetez un ordinateur portable, l'une des spécifications est la quantité de mémoire qu'il possède, comme 16 Go de RAM ou 32 Go de RAM. La mémoire principale est beaucoup plus rapide que le disque et connectée au CPU par une interconnexion plus rapide, comme le montre la Figure 5.4. Lorsque vous cliquez sur une icône pour démarrer un programme (par exemple, votre navigateur Web), le programme et les données nécessaires sont copiés du disque vers la mémoire principale. Ensuite, le CPU lit les données et les instructions de la mémoire dans les registres du CPU et l'ALU commence à les exécuter.
Processeur
Le processeur (processor), également appelé microprocesseur, est un autre nom pour le CPU. C'est le cerveau du système informatique, et son rôle principal est d'exécuter des programmes. Comme nous l'avons vu précédemment, le processeur récupère les instructions de la mémoire, comprend ce que chaque instruction veut faire, obtient les données nécessaires pour exécuter l'instruction, exécute l'instruction, puis stocke le résultat dans un registre ou dans la mémoire principale. Il continue ainsi jusqu'à la fin du programme. Il y a eu d'énormes avancées dans la conception des processeurs, conduisant à des ordinateurs plus rapides et plus puissants. Le processeur de votre smartphone aujourd'hui est plus puissant qu'un grand superordinateur il y a quelques décennies.