Architecture d’un ordinateur A. Lebrun
Modèle de Von Neumann Modèle développé en 1946 et qui sert de base à tous les ordinateurs Une unité centrale avec de la mémoire et des interfaces d’entrées sorties pour communiquer avec l’extérieur. L’ensemble des données sont échangées via des bus.
Composants Le microprocesseur ou unité centrale est chargée d’interpréter et d’exécuter les instructions du programmes avec les données qui sont prises et stockées dans les mémoires ou reçues par les organes d’entrées sorties. Les bus sont des fils qui véhiculent ces « données » sous forme de signal électrique Les instructions des programmes ne sont que des données particulières qui commandent les circuits logiques du microprocesseur
Unité centrale Caractérisée par la fréquence d’horloge Le nombre d’instructions par seconde qu’il peut effectuer (MIPS) La taille des données qu’il manipule (en bit)
Mémoire centrale Comporte une partie en ROM et une autre en RAM La mémoire ROM héberge le boot (opérations lors de mise sous tension de l’ordinateur) La mémoire RAM permet d’héberger des programmes supplémentaires (word ou autre) du commerce ou que vous écrivez La mémoire RAM permet aussi de stocker des informations nécessaires ou générées par le programme en cours d’exécution. Afin d’éviter le mélange des données, des zones mémoires spécifiques sont allouées à ces différentes données.
Entrées - Sorties Permettent de récupérer ou d’émettre à l’usage des hommes des informations nécessaires à l’exécution du programme ou les résultats obtenus Ils constituent une vaste famille (claviers, imprimantes, souris, enceintes, tout type de capteurs y compris des caméras …) L’ensemble des entrées sorties constituent les périphériques. Chaque périphériques envoie les données suivant un protocole particulier à une adresse mémoire spécifique. Du point de vue de UC, le périphérique n’est qu’une adresse spécifique.
Périphériques Il existe aussi des périphériques de stockages (mémoires secondaires : clefs USB, disques amovibles et autres) Chaque périphérique possède un système de gestion des données spécifiques qui permet de récupérer les données de l’ordinateur ou transmettre ses données à l’UC. En général les périphériques ont des vitesses de traitement inférieures à celles de l’ordinateur. Il existe donc pour système pour chaque périphérique qui gère l’ensemble des échanges (interface).
Constitution de l’interface Il comprend au moins trois registres Un registre de commande relié au bus de commande qui contient la description du travail demandé (sens de transfert, mode de transfert, …) Un registre de données (ou plusieurs) permettant de stocker les données à échanger qu’elles viennent de UC ou du périphérique. Il correspond à l’adresse connue par l’UC comme étant l’adresse du périphérique Un registre d’état qui indique si le périphérique est prêt, si l’échange s’est bien fait, si l’échange est complet, …
Technique d’échanges Il existe deux techniques d’échanges via l’UC La scrutation: UC interroge le registre d’état de l’interface pour savoir si l’échange est prêt. S’il n’est pas prêt, il attend l’UC passe une grande partie de son temps à attendre. L’interruption: a chaque fois qu’ un échange est prêt, le registre d’état envoie à l’UC un signal d’interruption. Sur réception de ce signal, l’UC gère l’échange, puis reprend l’exécution du programme principal
Les Bus Ensemble de fils véhiculant des signaux électriques caractéristiques des données Bus de données: bus bidirectionnel qui assure l’échange des données entre le microprocesseur et les autres organes et inversement. Le nombre de fil caractérise la capacité de traitement du processeur Bus d’adresse: bus unidirectionnel qui sélectionne l’adresse à laquelle on veut lire ou stocker une information. Le nombre de lignes de ce bus permet de connaître la capacité mémoire adressable Bus de commande: véhicule les signaux de synchronisation des données sur les autres bus
Organisation globale L’adresse comprend une partie haute (décodeur d’adresse) et une partie basse (adresse dans bloc sélectionné) Le décodeur d’adresse permet de valider le périphérique ou le bloc mémoire valide. Les autres sont mis en circuit ouvert ( haute impédance).
Architecture UC Unité centrale comporte une unité de traitement et une unité de commande, associées à des registres chargées de stocker des informations. Des bus internes favorisent les échangent entre UT, UC et les divers registres. Il y a des registres pointeurs et des registres de données permettant les calculs rapides
Unité de commande Son rôle est de séquencer le déroulement de l’instruction Recherche de l’instruction Décodage de l’instruction Envoie des ordres de traitement et des données à l’UT Préparation de l’instruction suivante
Composants de l’UC L’unité de commande comprend: Un compteur dit compteur ordinal qui contient en permanence l’adresse de l’instruction à traiter Une registre d’instruction qui reçoit l’instruction et qui l’envoie au décodeur d’instruction Un registre décodeur d’instruction qui est relié au bus de commande et qui émet les signaux nécessaires pour exécuter l’instruction à effectuer via un bloc logique qui reçoit en outre les signaux d’horloge.
L’unité de traitement Elle est constituée de l’unité arithmétique et logique associée aux registres nécessaires à son fonctionnement Registre(s) d’entrée: contien(nen)t les opérandes des opérations à faire Accumulateur: contient le résultat de l’opérateur. Cet accumulateur peut aussi servir de registre d’entrée pour certaines UAL. Registre d’état: contient les indicateurs relatifs à l’opération (carry, overflow, sign, zéro,parité…) Le registre d’état dépend de l’UAL choisie
Branchements
Caractéristiques d’une instruction Une instruction est un nombre codé en binaire. Le programme est une suite d’instructions qui se déroule les unes après les autres Chaque UAL possède son propre jeu d’instruction Une instruction peut être écrite sur un ou plusieurs octets. Si elle est écrite sur plusieurs octets, le décodeur d’instruction le saura et fera le nécessaire pour accéder à l’instruction complète. Une instruction peut comporter une donnée implicite, une donnée stockée en mémoire à une adresse contenue dans l’instruction ou calculable à partir de l’instruction ou provenant des E/S
Exécution d’une instruction sur un octet avec donnée implicite (clear) L’adresse de l’instruction placée dans le compteur ordinal est placée sur le bus adresse Le bloc logique de commande envoie le signal de lecture de la donnée dont l’adresse est sur le bus d’adresse La donnée de cette adresse est placée sur le bus de donnée et stockée dans le registre d’instruction qui l’envoie au décodeur d’instructions L’ordre de traitement de l’instruction est alors envoyé à l’UAL. Le résultat est placé dans l’accumulateur (0 pour Clear) et le registre d’état est positionné (bit zéro =1). Si le registre d’état ne génère aucun processus, le bloc logique incrémente le compteur ordinal de 1
Exécution d’une instruction sur deux octets avec donnée réelle (ajout de 3 au contenu de l’accumulateur) L’adresse de l’instruction x placée dans le compteur ordinal est placée sur le bus adresse Le bloc logique de commande envoie le signal de lecture de la donnée dont l’adresse est sur le bus d’adresse La donnée de cette adresse est placée sur le bus de donnée et stockée dans le registre d’instruction qui l’envoie au décodeur d’instructions Le décodeur d’instruction sait qu’il doit prendre la donnée située à l’adresse suivante et incrémente le compteur ordinal de 1 qui place cette valeur sur le bus adresse La case mémoire x+1 est lue et son contenu (3) est alors placée sur le bus de donnée et arrive sur le registre d’entrée de l’UAL L’ordre de traitement de l’instruction est alors envoyé à l’UAL. Le résultat est placé dans l’accumulateur (ACC+3) et le registre d’état est positionné. Si le registre d’état ne génère aucun processus, le bloc logique incrémente le compteur ordinal de 1
Exécution d’une instruction sur 2 octets avec donnée contenue en mémoire (ajout du contenu de l’adresse y avec le contenu l’accumulateur) L’adresse de l’instruction x placée dans le compteur ordinal est placée sur le bus adresse Le bloc logique de commande envoie le signal de lecture de la donnée dont l’adresse est sur le bus d’adresse La donnée de cette adresse est placée sur le bus de donnée et stockée dans le registre d’instruction qui l’envoie au décodeur d’instructions Le décodeur d’instruction sait qu’il doit prendre la donnée située à l’adresse y, cette adresse y étant située à l’adresse x+1 et il incrémente donc le compteur ordinal de 1 qui place x+1 sur le bus adresse La donnée de l’adresse x+1 est alors placée sur le bus de donnée et arrive sur le registre d’instruction. Le décodeur d’instruction prend cette adresse et la met sur le bus adresse. Cette adresse est lue est le contenu est mis à l’entrée de l’UAL via le bus de données L’ordre de traitement de l’instruction est alors envoyé à l’UAL. Le résultat est placé dans l’accumulateur (ACC+contenu de l’adresse y) et le registre d’état est positionné. Si le registre d’état ne génère aucun processus, le bloc logique incrémente le compteur ordinal de 1
Jeu d’instructions Le jeu d’instructions est l’ensemble des opérations arithmétiques ou logiques que peut faire une UAL avec des opérandes. Chaque UAL a un jeu d’instruction spécifique. Généralement une instruction comporte aussi où sont les opérandes et comment ils sont calculées. Ainsi l’instruction correspondant à l’opération somme sera codée différemment s’il faut ajouter un réel défini dans l’instruction ou un réel dont on connaît l’adresse ou un réel dont on peut calculer l’adresse. Généralement l’instruction de base se code sur 1 octet. Les opérandes ou les manières de les calculer prennent aussi 1 ou 2 octets. L’instruction complète peut prendre de 1 à plusieurs octets (généralement 2 ou plus)
Durée d’exécution d’une instruction La durée d’exécution d’une instruction dépend de l’instruction. Une instruction sur plusieurs octets nécessite plusieurs accès à la mémoire et sera donc plus longue qu’une instruction sur un octet Le plus pénalisant est bien sur l’accès à la mémoire. Pour cela certains processeurs transfère d’avance des bouts de mémoire centrale dans des registres spécifiques ajoutés à l’Unité centrale et d’accès plus rapide qu’à la mémoire de masse Si un programme a besoin d’une donnée provenant d’un périphérique ou d’une E/S, il interroge la case mémoire relative à ce périphérique. Un programme d’attente interdit de continuer l’exécution de l’instruction tant que la donnée n’a pas été fournie.
Langage de programmation Langage machine: le seul compris par les processeurs Langage assembleur: permet de programmer à l’aide de mnémoniques Langage de haut niveau (C, Pascal, Java,…) permet de réaliser des algorithmes dans un langage proche du langage humain La compilation permet de transformer le langage de haut niveau en assembleur L’assemblage traduit le langage assembleur en langage machine.
Bibliographie www.elektronique.fr/documents-pour-le-site/Cours-II.pdf marcel.developpez.com/cours/systeme/architecture-ordinateur/ www.siteduzero.com › Informatique https://www.lri.fr/~cecile/ENSEIGNEMENT/POLYARCHI/partie1.pdf http://www.canal-u.tv/video/universite_de_tous_les_savoirs/memoire_informatique_et_stockage.1101 http://igm.univ-mlv.fr/ens/Licence/L3/2008-2009/ArchiOrdi/index.php