Chapitre 1 Architecture de l'Ordinateur PDF
Document Details
Uploaded by UnwaveringWisdom223
Tags
Related
- Architecture des Ordinateurs & Réseaux PDF
- Notes de Cours - PREPA IRSS (2018)
- Chapitre I : Architecture d'un poste de travail PDF
- Préambule – Définitions et Généralités (PDF)
- Structure Machine - Présentation de la matière - 1ère année Licence Informatique (PDF)
- Cours d'informatique - Composants d'un ordinateur - PDF
Summary
Ce document présente l'architecture d'un ordinateur, en se concentrant sur le modèle de Von Neumann et les notions fondamentales de base comme la mémoire, le processeur et les périphériques. L'organisation et le fonctionnement des composants informatiques sont également abordés pour fournir une base solide à l'étude des ordinateurs.
Full Transcript
Chapitre 1 : Architecture de l’ordinateur 1.1. Introduction L’architecture d’un ordinateur est fondée sur le modèle de Von Neumann : la machine est construite autour d’un processeur, véritable tour de contrôle interne, d’une mémoire stockant les données et le programme, et d’un dispositif d’en...
Chapitre 1 : Architecture de l’ordinateur 1.1. Introduction L’architecture d’un ordinateur est fondée sur le modèle de Von Neumann : la machine est construite autour d’un processeur, véritable tour de contrôle interne, d’une mémoire stockant les données et le programme, et d’un dispositif d’entrées/sorties nécessaire pour l’échange avec l’extérieur. Le processeur exécute une par une les instructions stockées sous forme numérique en mémoire, écrites par le programmeur ou le compilateur, en utilisant ses éléments internes : séquenceur, registres et unité arithmétique et logique. Dans ce chapitre, nous présentons la structure interne d’un ordinateur et la manière d’exécution des instructions d’un processeur. 1.2. Organisation et fonctionnement d’un ordinateur 1.2.1. Configuration La configuration d’un ordinateur est l’ensemble des éléments matériel qui le constitue ainsi que leur performance. La configuration matérielle se compose de l’unité centrale et des périphériques Une des plus simples est celle d’un ordinateur personnel (PC : Personal Computer) tel qu’il est illustré par la figure 1.1. Figure 1.1. Configuration de base d’un PC - L’unité centrale comprend les organes de l’ordinateur auxquels, normalement, on n’accède pas manuellement : le microprocesseur, la mémoire vive (RAM), le disque- dur, la carte mère, la carte graphique, la carte son, les lecteurs et les éléments électriques. - Les périphériques Ce sont tous les appareils susceptibles de raccorder à l’ordinateur. Ce sont les organes de l’ordinateur qui permettent à l’utilisateur d’enter ou de percevoir des données : L’écran, le clavier, le souris, l’imprimante, le modem, le scanner.. - Le système d’exploitation C’est l’ensemble des programmes de base qui permettent à un ordinateur de fonctionner : windows, MacOs, Linux, Unix et les autres. 1.2.2. Modèles d’un ordinateur 1.2.2.1.Modèle de Von Neumann L’architecture de von Neumann est un modèle structurel d’ordinateur dans lequel une unité de stockage (mémoire) unique sert à conserver à la fois les instructions et les données demandées ou produites par le calcul. Les ordinateurs actuels sont tous basés sur des versions améliorées de cette architecture. Cette structure est caractérisée par un processeur (unité centrale de traitement) et une mémoire reliés par un bus (voir figure 1.2). La mémoire centrale (MC) : contient les programmes et les données L’unité centrale de traitement (UCT) : exécute les programmes. Bus : support d’acheminement de l’information entre la mémoire centrale et l’unité centrale de traitement. Figure 1.2. Modèle de Von Neumann 1.2.2.2.Modèle de Von Neumann avec unité d’E/S Le dispositif d’E/S (Entrée/Sortie) permettant l’échange d’information entre l’unité centrale et les périphériques (voir figure 1.3). Figure 1.3. Modèle de Von Neumann avec E/S 1.2.3. Structure simple d’un ordinateur La figure 1.4 illustre la structure classique d’un ordinateur actuel en séparant les différents composants en entités fonctionnelles. Figure 1.4. Structure d’un ordinateur 1.2.3.1.Processeur Aussi appelé CPU (Central Processing Unit), le processeur est le véritable cerveau de l’ordinateur. Toutes les avancées technologiques se concentrent sur ce composant, qui travaille toujours plus vite et effectue des opérations de plus en plus compliquées. Le rôle du processeur est d’exécuter les instructions composant le programme. Il se charge de tous les calculs mathématiques et des transferts de données internes et externes. Il décide (en fonction bien sûr des instructions du programme en cours d’exécution) de ce qui se passe à l’intérieur de l’ordinateur. 1.2.3.2.Stockage Des données peuvent être stockées dans plusieurs endroits sur l’ordinateur. La zone la plus importante en taille est le disque dur, où les données et programmes sont archivés de façon permanente. Cependant, vu qui’ il est lent, par rapport à la vitesse de fonctionnement du processeur, ne permet pas son utilisation lors de l’exécution des programmes. Pour pouvoir exécuter une application, il faut prendre les instructions qui la composent ainsi que les données dont elle a besoin dans une mémoire beaucoup plus rapide (pour extraire rapidement une information précise). C’est la mémoire principale qui est constituée de circuits intégrés dont la cellule de base est une bascule. L’unité de base est l’octet (8 bits) et on peut voir la mémoire comme un ensemble ordonné d’octets dans lequel chaque case mémoire (donc chaque octet) a une adresse numérique. La mémoire principale est un composant passif dans le sens où elle ne fait qu’obéir à des commandes. Le processeur peut lui demander de stocker une donnée à une adresse précise (écriture mémoire) ou de fournir une donnée se trouvant à une adresse donnée (lecture mémoire). Le processeur est relié à la mémoire via le bus principal de l’ordinateur (ensemble de fils véhiculant les informations et les commandes). Comme le processeur est en permanence en train de travailler avec la mémoire (car il y récupère tout ce dont il a besoin, données et instructions), le bus doit être le plus efficace possible. L’augmentation des performances de l’ordinateur passe également par l’amélioration de la bande passante de ce bus. Celle-ci indique le débit d’informations pouvant circuler sur le bus (en octets par seconde). Ainsi, plus le bus est important, plus le processeur peut travailler rapidement avec la mémoire. Malgré le progrès technologique qui a permis de construire des boîtiers mémoire de grande capacité et pouvant répondre le plus rapidement possible aux demande du processeur, ces derniers passaient une bonne partie de leur temps à attendre que la mémoire réagisse aux demandes, d’où une perte d’efficacité importante due à ces temps d’attente. Il a donc fallu introduire une mémoire plus rapide entre la mémoire principale et le processeur une mémoire. Cette mémoire, plus chère et de capacité moindre, est appelée « mémoire cache » ou simplement « cache ». Cette mémoire permet d’accélérer encore plus les échanges de données avec le processeur. 1.2.3.3.Entrées/sorties Le système d’entrées/sorties regroupe l’ensemble des composants (appelés aussi « périphériques ») permettant à l’ordinateur d’échanger de l’information avec le monde extérieur (clavier, souris, scanner, écran, carte son, imprimante…) et de stocker des informations de manière permanente et de les relire (disque dur, CD/DVD, bandes magnétiques, clés amovibles…). Les entrées/sorties se caractérisent par leur variété et leur flexibilité. Il faut pouvoir connecter à l’ordinateur divers périphériques, répondant à des commandes différentes et fonctionnant sur une plage de « vitesses » différentes. On ne peut relier directement les entrées/sorties au bus principal car le système d’entrées/sorties fonctionne avec des vitesses moins importantes que le bus principal, dont la caractéristique première est de permettre les échanges de données les plus rapides possibles. On branche donc les différentes entrées/sorties sur un bus d’entrées/sorties secondaire, normalisé suivant des standards internationaux, afin de garantir une compatibilité de tous les matériels et une évolution aisée. La seule exception à cette règle est celle de la carte vidéo car les besoins en visualisation ont augmenté de façon exponentielle. La complexité des affichages graphiques actuels (taille de l’écran, profondeur des couleurs, plusieurs images par seconde, textures réalistes, 3D…) nécessite un énorme débit d’informations entre le processeur et la carte vidéo (chargée de piloter l’affichage), débit que ne pourrait offrir le bus d’entrées/sorties beaucoup trop lent. Ainsi, la carte vidéo se retrouve connectée directement au bus principal de l’ordinateur via le contrôleur système. Un dernier composant apparaît: il s’agit du contrôleur système. Avec l’ensemble des éléments qui communiquent avec le processeur, il risquerait d’y avoir des conflits d’accès au bus principal. Le contrôleur gère donc les différentes demandes pour garantir à chacun un libre accès au bus. Il permet également le passage des informations du bus d’entrées/sorties au bus principal (et réciproquement) en gérant les différences de format de données et de vitesse de transfert entre les deux bus. 1.3. Cycle d’un programme 1.3.1. Assembleur Les premiers programmes étaient écrits directement en code machine, ainsi, les codes numériques correspondant aux instructions étaient entrés un par un en mémoire par l’utilisateur. Très rapidement, on est passé à la programmation en langage assembleur, dans laquelle des expressions symboliques, remplaçaient les codes numériques. Ainsi, au lieu de saisir le code 5ef416 en hexadécimal (ou son équivalent binaire), on écrivait ADD A, B. Cette dernière formulation était beaucoup plus compréhensible pour le programmeur, qui voyait tout de suite qu’il s’agissait d’une addition entre deux nombres stockés quelque part. Cependant, l’ordinateur ne savait toujours travailler qu’avec des codes numériques et il fallait les transformer pour qu’ils puissent être exécutés. C’était le rôle du programme d’assemblage, qui prenait comme entrée un autre fichier décrivant un programme à l’aide d’expression symbolique et qui générait le code numérique équivalent (ou code binaire), permettant ainsi à l’ordinateur d’exécuter les instructions (voir figure 1.5). La programmation en assembleur a quand même de sérieux inconvénients. D’abord, il est difficile d’écrire des lignes de code car, les instructions étant souvent peu puissantes, il faut en aligner beaucoup pour obtenir un résultat, même simple. Ensuite, les instructions sont spécifiques à un modèle de processeur et tout changement de machine implique une réécriture plus ou moins complète du code. 1.3.2. Compilateur Pour pallier ces défauts, des langages évolués (C, C++, Java, Pascal……) ont été développés et, de nos jours, il est rare d’avoir à programmer directement en assembleur. Qu’ils soient orientés objet, déclaratifs ou encore impératifs, tous les langages évolués disposent de structures de données et de contrôle évoluées permettant aux développeurs de se concentrer sur l’algorithmique des applications, plutôt que sur l’écriture difficile du code assembleur. Cependant, ces instructions ne sont plus directement compréhensibles par l’ordinateur. Une phase de traduction en langage machine pour obtenir un programme exécutable est nécessaire. C’est le rôle du compilateur qui prend en entrée un fichier texte contenant le code source écrit en langage évolué pour produire un fichier exécutable formé de codes numériques propres à la machine. Aussi, on a gagné en portabilité puisque les langages évolués sont relativement normalisés et le code source d’un programme peut facilement être « porté » sur un autre ordinateur, à la seule condition d’avoir le compilateur prévu pour ce langage, générant, ainsi, des instructions en langage machine adaptées à la nouvelle machine. 1.3.3. Éditeur de liens Le compilateur génère un fichier objet, qui n’est pas immédiatement exécutable. Ce fichier est constitué d’instructions machine, mais ne constitue pas forcément l’intégralité du programme. Celui-ci est souvent découpé en modules séparés. Une fois chacun d’entre eux compilé (sous forme de fichier objet), il faut les réunir en une seule application : c’est le rôle de l’éditeur de liens. Ce programme prend tous les fichiers objet, récupère diverses bibliothèques standard (parties du programme déjà écrites en langage machine) et regroupe le tout pour fournir au final une application complète, directement exécutable. L'éditeur de liens a pour rôle de lier les fichiers objets (fichiers simplement compilés) avec les fichiers pré-compilés d'une ou plusieurs bibliothèques. Figure 1.5. Cycle d’un programme compilé 1.3.4. Interpréteur Comme le montre la figure 1.6, il existe une autre façon de rendre un programme accessible à un ordinateur: c'est l’interprétation. Un interpréteur est un logiciel qui interprète le programme source, c'est-à-dire qu'il analyse les instructions du programme source, les unes après les autres, et exécute chacune d'elles immédiatement. Dans ce cas, il n'y a pas de création d'un programme objet équivalent. Parmi les langages qui utilisent l’interprétation, on cite : PHP, Perl ou Basic. L’inconvénient de ce logiciel est qu’il tourne beaucoup plus lentement que s’il était compilé. En effet, l’interpréteur doit simuler le fonctionnement des instructions au lieu de laisser l’ordinateur le faire directement. Pour cette raison, les langages interprétés sont plutôt réservés à l’écriture de petits programmes pour lesquels la facilité de développement (on modifie, on exécute), prime sur la rapidité d’exécution. Figure 1.6. Cycle d’un programme interprété 1.4. Conclusion Dans ce premier chapitre, nous avons détaillé le cycle d’exécution d’un programme écrit en assembleur et nous avons expliqué le fonctionnement général d’un ordinateur et introduit succinctement la structure interne d’un ordinateurs, nous détaillerons dans les chapitres qui suivent chacune des composantes.