CHAP 1
Modèle de Von Neumann
Dans cette partie, nous décrivons rapidement l’architecture de base d’un ordinateur et les principes de son fonctionnement. Un ordinateur est une machine de traitement de l’information. Il est capable d’acquérir de l’information, de la stocker, de la transformer en effectuant des traitements quelconques, puis de la restituer sous une autre forme. Le mot informatique vient de la contraction des mots information et automatique.
I. Architecture de base d’un ordinateur :
L’architecture, dite architecture de Von Neumann, est un modèle pour un ordinateur qui utilise une structure de stockage unique pour conserver à la fois les instructions et les données requises ou générées par le calcul. De telles machines sont aussi connues sous le nom d’ordinateurs à programme stocké en mémoire. La séparation entre le stockage et le processeur est implicite dans ce modèle.
C’est la première description d’un ordinateur dont le programme est stocké dans sa mémoire. L’architecture de Von Neumann décomposait l’ordinateur en quatre parties distinctes:
a) La mémoire centrale :
C'est là que sont mémorisés les informations et les programmes qui les traitent, tout au long de l'exécution. Cette mémoire est aussi appelée mémoire vive (ou RAM en anglais); elle est volatile, c'est-à-dire qu'elle perd ses informations dès qu'elle n'est plus alimentée en courant. De sa capacité dépend la capacité de l'ordinateur à exécuter efficacement de "gros programmes" sur des volumes de données importants, ou éventuellement à exécuter plusieurs programmes "en même temps" (c'est le cas quand sur un ordinateur personnel, on exécute plusieurs applications simultanément). La capacité de la mémoire centrale varie couramment de quelques Méga-octets à quelques Giga-octets. Chaque emplacement de la mémoire est numéroté par une "adresse". Cette adresse est un entier positif, indispensable pour retrouver l'endroit en mémoire où est mémorisée une information. La mé-moire centrale contient aussi toujours au moins un petit peu de "mémoire morte" (ROM pour Read Only Memory), pour contenir le premier programme qui s'exécute au démarrage. Dans le cas des ordinateurs embarqués, l'ensemble des programmes peut être enregistré en ROM (ils ne sont alors plus modifiables).
Dans les nouvelles architectures on trouve aussi une Mémoire Cache (mémoire tampon): mé-moire rapide permettant de réduire les délais d’attente des informations stockées en mémoire vive.
Structure de la MP: La mémoire est divisée en emplacements de taille fixe (par exemple 8 bits) utilisés pour stocker instructions et données.
En principe, la taille d'un emplacement mémoire pourrait être quelconque; en fait, la plupart des ordinateurs en service aujourd'hui utilisent des emplacements mémoire d'un octet (byte en anglais, soit 8 bits, unité pratique pour coder un caractère par exemple).
Dans une mémoire de taille N, on a N emplacements mémoires, numérotés de 0 à N-1. Chaque emplacement est repéré par son numéro, appelé adresse. L'adresse est le plus souvent écrite en hexadécimal..
La capacité (taille) de la mémoire est le nombre d'emplacements, exprimé en général en kilo-octets ou en méga-octets, voire davantage.
Sélecteur d’adresse (décodeur) c’est un circuit à n entrées et 2^n sorties. Il permet de déterminer une cellule à partir d’une adresse.
Opérations sur la mémoire: Seul le processeur peut modifier l'état de la mémoire. Chaque emplacement mémoire conserve les informations que le processeur y écrit jusqu'à coupure de l'alimentation électrique, où tout le contenu est perdu (contrairement au contenu des mémoires externes comme les disquettes et disques durs).
Les seules opérations possibles sur la mémoire sont:
- écriture d'un emplacement: le processeur donne une valeur et une adresse, et la mémoire range la valeur à l'emplacement indiqué par l'adresse;
- lecture d'un emplacement: le processeur demande à la mémoire la valeur contenue à l'emplacement dont il indique l'adresse. Le contenu de l'emplacement lu reste inchangé.
- 1 octet (8 bits) dans les processeurs 8 bits (par exemple: Motorola 6502); .
- 2 octets dans les processeurs 16 bits (par exemple: Intel 8086);
- 4 octets dans les processeurs 32 bits (par exemple: Intel 80486 ou Motorola 68030)
b) L’unité arithmétique et logique (UAL)
L'UAL ou unité de traitement comporte des dispositifs électroniques capables d'effectuer des opérations logiques et arithmétiques sur les codes binaires, son rôle est d’effectuer les opérations de base, un peu comme le ferait une calculette. Elle possède les registres suivants :
- Les registres arithmétiques.
- Les registres de base et d’index (calcul d’adresse par rapport à une base ou index).
- Les registres banalisés (exemple : stockage de résultats intermédiaires).
- Le registre d’état PSW (Program Status Word) (Flags : F) A chaque opération, le microprocesseur positionne un certain nombre de bits. Ces bits sont appelées aussi indicateurs d'état ou drapeaux (status, flags). Par exemple, si une soustraction donne un résultat nul, l'indicateur de zéro ( Z ) sera mis à 1. Ces indicateurs sont regroupées dans le registre d'état
c) L’unité de contrôle (commande)
L'unité de contrôle organise le fonctionnement interne de la machine. Elle est chargée de provoquer dans l'unité de calcul les opérations prévues par le programme, comme elle contrôle aussi l'ensemble des autres dispositifs de l'ordinateur. C’est l’équivalent des doigts qui actionneraient la calculette.
L’unité de commande est constituée de plusieurs organes qui permettent la lecture en mémoire et le décodage des instructions. On trouve:
- Le compteur ordinal (Instruction Pointer) (IP):
- Le registre d’instruction (RI): contient le code de l'instruction en cours d'exécution (lu en mémoire via le bus de données); il a le même format qu’une instruction. ou Compteur de Programme, contient l'adresse de l'emplacement mémoire où se situe la prochaine instruction à exécuter;
- Le décodeur de code opération qui détermine l’opération à effectuer parmi toutes celles possibles.
- Le séquenceur est un automate générant les signaux de commandes nécessaires pour actionner et contrôler les unités participant à l’exécution d’une instruction. Il existe deux types de séquenceurs:
- le séquenceur câblé qui est un circuit séquentiel complexe mais d’exécution très rapide.
- le séquenceur micro programmé contenu dans une ROM qui est plus simple à utiliser et à concevoir, mais moins rapide.
- L’horloge qui synchronise toutes les actions de l’unité centrale.
d) Unité d’entrées-sorties
Ces des dispositifs qui permettent de communiquer avec le monde extérieur.
Dans les nouvelles architectures l’UAL et l’unité de contrôle sont regroupés en un seul dispositif « le processeur » ou microprocesseur. Un ordinateur se compose donc principalement d'un processeur (CPU), de mémoire (RAM et ROM), et de composants périphériques (Clavier, port série, contrôleur en tout genre, carte son....). Le CPU est bien sur le maître à bord dans un ordinateur (comme dans une console de jeux d'ailleurs), la mémoire et les périphériques étant à son service. Le CPU est connecté aux périphériques et à la mémoire à l'aide d'un BUS.
II. Le BUS
Le BUS est une chaîne ou tous les périphériques sont connectés en parallèle. Un BUS système se divise généralement en trois sous BUS:
- Le BUS de données (c'est la partie qui transporte les données brutes). Notons que plus ce bus est large plus le système sera rapide. En effet un système 16 Bits est plus rapide qu'un système 8 bits car il est capable de 'transporter' 2 octets à la fois alors que le système 8 bits n'en transporte qu'un à la fois (1 octet = 8 bits)
- Le BUS d'adressage (c'est celui qui désigne un endroit dans la mémoire ou un périphérique). Plus il est large plus on peut adresser de la mémoire. Exemple: bus d'adressage 16bits =64Ko adressables, bus 32bits = 4Go!)
- Le BUS de contrôle (il désigne le mode de l'opération à effectuer: Lecture ou écriture, périphérique ou Mémoire, Interruption, etc.)
III. Les registres
C'est l'ensemble des emplacements facilement spécifiables qui contiennent temporairement les opérandes et les résultats des opérations ou des données comme une instruction ou une adresse. Se sont des petites mémoires internes à accès très rapides. Chaque registre stocke 8, 16,32 ou 64 bits. Le nombre exact de registres dépend du type de processeur et varie typiquement entre une dizaine et une centaine.Il n'est absolument pas nécessaire que les registres soient homogènes bien qu'on puisse souvent grouper les registres en classes, de sorte que les registres d'une classe peuvent être utilisés à la place de n'importe quel autre registre de la même classe. Mais il n'est pas rare qu'une classe ne comporte qu'un seul registre.
Les architectures ont quasiment toutes au moins deux classes de registres: une pour stocker les valeurs entières, une pour stocker les nombres représentés en virgule flottante. Mais souvent, l'espace de travail comporte des registres ayant des fonctions particulières.
Un accumulateur : est un registre servant de source implicite à la plupart des instructions et contenant le résultat après leur exécution.
Les registres d'index : sont des registres servant au calcul d'adresse.
Un pointeur de pile : indiquant l'adresse du sommet d'une pile gérée par le processeur.
Un frame pointer : servant à accéder aux données locales de la routine en cours d'exécution.
Certains registres ont un comportement particulier: ils informent de l'état du processeur ou contiennent des informations à propos des dernières opérations effectuées (par exemple un indicateur indiquant si le dernier résultat était nul ou pas). Parmi ces registres particuliers on trouve souvent:
Le compteur ordinal (program counter, instruction pointer) : indiquant l'adresse de l'instruction en cours d'exécution ou de la prochaine instruction à exécuter;
le mot d'état : regroupant les informations les plus importantes sur l'état du processeur.
IV. Notion de programme
Un programme est une suite d'instructions élémentaires, qui vont être exécutées dans l'ordre par le processeur. Ces instructions correspondent à des actions très simples, comme additionner deux nombres, lire ou écrire une case mémoire, etc. Chaque instruction est codifiée en mémoire sur quelques octets.
Le processeur est capable d'exécuter des programmes en langage machine, c'est à dire composés d'instructions très élémentaires suivant un codage précis. Chaque type de processeur est capable d'exécuter un certain ensemble d'instructions, son jeu d'instructions.
Pour écrire un programme en langage machine, il faut donc connaître les détails du fonctionnement du processeur qui va être utilisé.
V. Exécution d'une instruction
Les différentes phases d'une exécution : On peut suivre les différentes phases de l'exécution d'une instruction. Celles-ci sont au nombre de 3 :
- Recherche de l'instruction (Fetch),
- Décodage (décode),
- Exécution (exécute)
Recherche de l'instruction:
- Le contenu de PC (compteur ordinal) est placé sur le bus des adresses (c'est l'unité de commande qui établit la connexion).
- L'unité de commande positionne le compteur ordinal (PC) pour l'instruction suivante.
- L'unité de commande (UC) émet un ordre de lecture (READ=RD=1) Au bout d'un certain temps (temps d'accès à la mémoire) le contenu de la case mémoire sélectionné est disponible sur le bus des données.
- L'unité de commande charge la donnée dans le registre d'instruction pour décodage.
Décodage:
Le registre d'instruction contient maintenant le premier mot de l'instruction qui peut être codée sur plusieurs mots. Ce premier mot contient le code opération qui définit la nature de l'opération à effectuer (addition, rotation,...) et le nombre de mots de l'instruction. L'unité de commande décode le code opération et peut alors exécuter l'instruction.
Exécution:
- Le micro-programme réalisant l'instruction est exécuté.
- Les indicateurs sont positionnés (registre d'état).
- Stockage des résultats à leurs destinations respectives.
- Retour à l'étape 1 pour exécuter l'instruction suivante.