jeudi 19 avril 2012

Fonctionnement d'un système à Microprocesseur





Commençons par examiner un petit montage électronique à base de microprocesseur. Ce schémas représente un processeur interfacé à une mémoire (une ROM minimum est obligatoire) et un circuit d'entrée / sortie (un clavier, un modem, contrôleur de disque dur...).

Le microprocesseur (aussi appelé CPU pour Central Processeur UNIT) est l'élément principal d'un ordinateur, il traite des instructions à la suite les unes des autres. Il ne prend aucune décision, seules des instructions conditionnelles sont influencées par des commandes extérieures: clavier, souris et autres demandes de périphériques, ... Ces suites d'instructions sont communément appelées un programme. Chaque modèle de microprocesseur lit des instructions spécifiques à sa conception sous forme d'un langage de base que l'on appelle assembleur. Ce langage de programmation est complexe à utiliser puisqu'il est spécifique "machine" et codé en hexadécimal (au même titre que les données ce qui complique encore la programmation). Les logiciels que nous utilisons sont écrit dans des langages évolués (C, Visual Basic, ...) qui transposent les programmes en assembleur compréhensible par le processeur. Sauf quelques petites améliorations, tous les microprocesseurs des ordinateurs de la famille X86, du moins en 32 bits, (Intel Core, Athlon, ...) comprennent le même langage assembleur.


Les circuits interfacés ci-dessus sont divers: mémoire, port de sortie, ... Néanmoins, tous les montages électroniques à base de microprocesseurs incluent un programme de départ dans une mémoire ROM (le contenu n'est pas effacé en l'absence de tension d'alimentation du circuit). Ce programme permet au microprocesseur d'exécuter son initiation au démarrage (ce qu'il doit faire comme détecter le disque dur, tester la mémoire, ...). Un système à microprocesseur est donc constitué de plusieurs circuits interfacés comme la mémoire ROM (obligatoire), la mémoire RAM (mémoire de travail pour les résultats), port d'entrée (clavier), port de sortie (afficheur, écran), ... mis en parallèle.


Deux types de processeurs sont fabriqués, le microprocesseur et le microcontrôleur. Au niveau traitement des informations, les 2 sont pratiquement équivalents. La distinction vient des fonctionnalités internes. Un microcontrôleur est dédié aux traitements des entrées / sorties (périphériques). De ce fait, des ports sont rajoutés (parallèle et / ou série suivant les modèles) qui vont permettre de recevoir ou d'envoyer des informations de périphériques lents. On pourrait utiliser un microprocesseur pour les mêmes fonctions mais ceci nécessiterais de rajouter des composants électroniques externes pour chaque port externe. Un microcontrôleur inclut souvent la programmation dans une mémoire ROM interne et même de la mémoire de travail de type RAM. Comme un microcontrôleur gère des périphériques lents, il n'est pas optimalisé pour la vitesse de traitement d'informations, ni même pour gérer des quantités de mémoire importantes.


3.1. brochage et signaux d'un processeur de base, le Z80
L'interfaçage du processeur nécessite 3 bus: un bus de donnée, un bus d'adresse et un bus de commande. Un bus est un ensemble de lignes de communication (matérialisé par des fils) qui relie 2 (ou plus) circuits digitaux entre-eux. Sur chaque fil, la tension électrique peut prendre 2 valeurs distinctes que nous désignerons généralement par 1 et 0 (tension présente ou absente).


Chaque emplacement mémoire ou périphérique interne est désigné par une adresse spécifique (parfois plusieurs à la suite de l'autre, ce que l'on appelle une plage d'adresse), similaire à une adresse postale. Une adresse spécifique ne peut pas être partagée entre plusieurs circuits. Le bus d'adresse permet au processeur de communiquer avec le périphérique via son adresse (ou sa plage). Un bus d'adresse est constitué de plusieurs lignes. Par exemple, 8 bits correspond à 8 lignes d'adresses et peut donc adresser 2 8 (soit 256) adresses différentes, 210 donne 1024, soit 1 Kilo. Plus le nombre de lignes d'adresse est élevé, plus le processeur est capable de gérer de périphériques ou de capacité mémoire Ram.


Une fois le périphérique contacté via le bus d'adresse, le bus de donnée permet de transférer des données binaires (y compris les lignes d'instruction en assembleur): en lecture (données transférées au processeurs) ou en écriture (envoi de données vers le périphérique). Le bus de donnée est constitué d'un certain nombre de lignes. Toutes les capacités des bus de donnée sont désignées sous 8 lignes de données (en Byte - octet), ou en multiple de 8 bits, les processeurs actuels utilisent 64 lignes de données. Donc 1 MB de mémoire signifie 1 Mb sous 8 lignes, soit 8 Mb (Méga bits).
Un bus de commande synchronise les transferts de données entre le processeur et les périphériques (mémoire, entrées / sorties). Il assure le dialogue nécessaire pour le transfert à (opération d'écriture) ou de (opération de lecture) l'adresse indiquée. Les signaux du bus de commande permettent également de gérer les interruptions, commandes spécifiques qui permettent à un circuit externe de signaler au processeur qu'il est prêt à recevoir des données de l'extérieur par exemple. Signal bas signifie qu'il est actif lorsque le signal est à 0 V (on le désigne par signal), non actif lorsque le signal est à l'état haut (typiquement 5V). Les séquences présentes sur le bus de commande sont également spécifiques au processeurs. C'est ce que l'on appelle le TIMING. Voici par exemple le brochage d'un processeur Z80 des années 80.


A0-A15 est le bus d'adresse. Il est actif haut et permet de prendre 3 états. Ce modèle permet donc 65536 adresses différentes (216).
D0-D7: bus de données sur 8 bits actif haut, entrée / sortie 3 états.
MREQ: Memory Request, sortie 3 états active bas, signale une adresse mémoire valide sur le bus d'adresse, en lecture comme en écriture.
IORQ: Input/ output request, sortie 3 état, actif bas, indique que les 8 premiers bits du bus d'adresse contiennent une adresse valide pour une opération d'entrée / sortie (lecture ou écriture).
RD: Memory Read, sortie 3 état actif bas, indique une opération de lecture à l'emplacement de l'adresse signalée sur le bus, en mémoire ou en Entrée / sortie.
WR: Memory Write, Sortie 3 états, actif bas, une demande d'écriture en mémoire ou en entrée / sortie.
RFSH: refresh, sortie, actif bas, indique une adresse de rafraîchissement sur les 7 bits inférieurs du buis d'adresse.
HALT: Etat d'arrêts, sortie, actif bas, indique que le CPU vient d'effectuer une instruction software HALT et attend une interruption masquable ou non masquable. Le microprocesseur continue à rafraîchir la mémoire pendant ce temps.
WAIT: attente, entrée, actif bas, utilisé par les périphériques I/O pour faire attendre le CPU, permet une synchronisation avec les périphériques plus lent.
INT: interrupt request, entrée, signal actif bas, demande d'interruption mascable (par un instruction logicielle) signale qu'un périphérique demande une interruption. Quand le microprocesseur accepte l'interruption, un signal accusé de réception IORQ est envoyé au début du cycle d'instruction qui suit.
NMI: Non-maskable interrupt, entrée, déclenchée par flanc descendant. Cette demande d'interruption est toujours prise en charge à la fin de l'instruction en cours. Elle est prioritaire sur les INT. Pour le Z80, le CPU redémarre automatiquement à l'adresse $ 00 66. Le contenu du compteur adresse courant est automatiquement sauvegardé pour reprendre le programme après la fin de traitement de l'interruption.
Reset: réinitialisation, entrée, active bas, réinitialise le processeur; tous les compteurs et adresses internes, ... Le processeur redémarre au début de son programme d'initiation.
BUSRQ: Bus request, demande de DMA (direct memory access). Le CPU fait passer toutes ses entrées sortie trois états dans ce mode dès la fin de l'instruction en cours. Les périphériques prennent le contrôle total des 3 bus et transfèrent des données vers la mémoire sans passer par le processeur. Cette fonction est souvent utilisée dans les ordinateurs actuels (disques durs E-IDE et SCSI, bus AGP, PCI et PCI-express, ...)
BUSAK: Bus acknoledge, sortie, actif bas, indique que le CPU accepte le BUSRQ et que les trois bus son bien en tri-state (déconnectés).
M1: cycle machine M1 (spécifique au Z80), cycle machine en cours est le cycle de recherche d'un code opératoire.
Horloge: ce signal provenant de l'extérieur va cadencer l'ensemble des signaux du montage. C'est la fréquence de travail du processeur.
Peu de ces signaux n'interviennent réellement dans les notions courantes sur les systèmes PC (et autres). Cinq signaux sont cependant primordiaux pour une système informatique: RESET, INT, NMI, BUSREQ et BUSAK. Ils seront utilisés dans la suite du cours au niveau des PC.


3.2. Exemples de timing microprocesseur Z80
Le but n'est pas de rentrer dans les détails des TIMING d'un Z80 (ni d'un autre d'ailleurs) mais d'expliquer ce qui se passe au coeur du montage informatique.
Ceci représente le chargement d'une instruction ou d'une donnée par le processeur suivi d'une écriture. L'ensemble des signaux est cadencé par l'horloge. Le microprocesseur commence par mettre une adresse valide sur le bus d'adresse (celle où se trouve l'instruction). Une fois le signal stable, il émet un signal MREQ et un READ pour signaler à la mémoire qu'une adresse valide est présente sur le bus et qu'il va demander un accès mémoire en lecture. A la fin du cycle, la mémoire transfert sur le bus de données les informations (IN). Dans la cas d'une écriture vers la mémoire, le signal READ est remplacé par un signal WRITE. Un signal WAIT est renvoyé par la mémoire (ou plus généralement par un petit montage inséré dans les bus de commande) pour ralentir le montage.
Ce timing est identique à celui ci-dessus sauf que 2 temps d'attente (WAIT) sont insérés pour ralentir le montage (cas où la mémoire n'est pas assez rapide pour le processeur) et qu'un signal de rafraîchissement mémoire (REFRESH) est envoyé à la fin du chargement d'instruction.


Requête d'interruption.
Une interruption permet à un périphérique de signaler au processeur qu'il doit s'occuper de lui (arrivée d'une donnée, ...). Le signal INT est échantillonné par le processeur sur le flanc montant du dernier cycle d'horloge de chaque instruction. Ce signal d'interruption n'est accepté que si le masque software d'interruption (une commande assembleur spécifique qui demande au processeur de ne pas tenir compte des interruptions mascables) n'est pas accepté ou si le signal BUSRQ n'est pas actif (demande de DMA).


Quand le signal est accepté, un signal M1 est généré. Durant ce cycle spécial M1, le signal IORQ devient actif (à la place du signal mémoire MREQ), indiquant que le périphérique demandant une interruption peut placer une donnée sur 8 bit sur le bus de donnée. Dans le cas du Z80, 2 instructions d'attente sont d'office générée, ce qui évite un montage électronique pour ralentir la lecture des données sur des périphériques plus lents que la mémoire. Ceci permet au signal de se stabiliser.
Représentés ci-dessus le décodage d'adresse pour deux processeurs différents de la même génération: un Z80 et un 6502. La différence vient du décodage des adresses liée aux signaux de lecture et d'écriture. Le Z80 utilise deux broches distinctes (RD et WR) qui sont chacunes reliées à la broche correspondante de la mémoire ROM (sauf écriture), Ram et d'un périphérique IO. En 6502, une seule broche est utilisée.


Exercice: Raccorder le microprocesseur (bus de données sur 8 bits et bus d'adresse sur 16) aux 4 mémoires sur 4 bits (données) ci-dessous. Le circuit utilise 214 adresses valides. Dessinez les bus d'adresses et de données, les signaux d'écritures et lecture mémoire, ensuite le décodage d'adresse en utilisant des portes NO, NAND et NOR pour connecter chaque CE (chp enable).
Le microprocesseur z80 est connecté au bus d'adresse et au bus de donnée par des buffers tri-state (trois états). Ils ne sont pas obligatoires (inclus dans le processeur) mais sont souvent rajoutés par précaution. Ces buffers "trois états" permettent les fonctions de DMA (Direct Memory Access) du montage électronique: transferts directs des données de (ou vers) la mémoire à partir d'un circuit périphérique sans transit des données par le processeurs. Le circuit périphérique doit pour ce faire contrôler les trois bus.


Le bus d'adresse est relié en partie basse sur les mémoires et périphériques. La partie haute est utilisée pour le décodage d'adresse.


Le bus de donnée est directement raccordé sur tous les périphériques. Chaque périphérique est relié au bus de commande par les signaux lecture (READ) et écriture (WRITE), actifs bas.


Le signal RESET (le bouton sur la face avant du PC) réinitialise le montage en hardware. Le RESET software ( + + est programmé dans le système d'exploitation. Un reset fonctionne dans tous les cas de plantage et redémarre l'ordinateur, sauf en cas de panne du montage électronique.

L'horloge synchronise les transferts entre tous les circuits.
3.5. Montages informatiques
Le schéma électronique ci-dessus représente un système à microprocesseur de type industriel. Très efficace dans un processus "fermé", il est difficilement utilisable tel quel dans un ordinateur. Une bonne part des fonctions sont remplacées par des circuits plus ou moins spécialisés.

Un ordinateur va par exemple afficher le résultat sur un écran ou un LCD. Pour les PC, on utilise un circuit dédié inséré sur une carte électronique appelée "Carte graphique". Pour que nous, utilisateurs, puissions commander l'ordinateur, nous allons insérer un clavier et une souris. Ils sont également raccordé via un circuit spécialisé.

En dernier, pour pouvoir communiquer avec des appareils externes divers, nous utilisons des "ports de communication" de type parallèle ou série. Pour un port parallèle, le nombre de lignes de données sont des multiples de 8. C'est une continuation (mais plus lente) d'un bus de donnée interne via une interface dédiée qui utilise des signaux de contrôle plus spécifiques aux appareils externes, par exemple un port Centronix pour imprimante. Pour un port série, la transmission des données utilise un fil (en pratique 3 minimum: envoi, réception et masse). L'information sur 8 bit (un Byte) est découpée pour envoyer chaque bit un à la suite de l'autre. C'est par exemple le cas d'un modem série, d'un périphérique USB ou même d'un disque dur S-ATA. Le fil de communication transmet non seulement les données, mais également des signaux de contrôle.

En dernier, le schéma ci-dessus est appelé système fermé. Le raccordement de cartes supplémentaires est impossible. Dans le cas de systèmes ouverts, comme les PC, les cartes additionnelles utilisent des connecteurs internes spécifiques, aussi appelés bus (PCI, AGP, AMR, ...). Ils sont normalisés (dimension, brochage, timing des signaux, ...). Nous les verrons au chapitre 6.

3.6. Types de Mémoires utilisées dans les ordinateurs.
Deux types de mémoires distinctes sont utilisées dans les ordinateurs: les ROM et les Ram.

Une mémoire RAM autorise l'écriture et la lecture mais nécessite d'être rafraîchies (rechargée) régulièrement. En effet, le contenu (1 ou 0) est sauvegardée par effet capacitif dans un transistor. Les Ram sont raccordées par l'extérieur par le bus d'adresse et le bus de données. Les signaux de contrôle sont CE, WR et RD (oe). En plus, et c'est là leur principal problème, les données disparaissent si elles ne sont plus alimentées.

Une mémoire ROM est utilisable uniquement en lecture et programmée directement à la fabrication. Le contenu (programme et données) n'est donc pas modifiable. Quelques circuits de type ROM modifiables sont également utilisés: Eprom (Electric Prom) programmables en 1 fois (mais peuvent êtres dans certaines versions effacées à la lumière UV), EEprom (Electric Erasable Prom), effaçable complètement plusieurs fois et Rom Flash que l'on peut écrire directement par un signal électrique. Tous ces circuits gardent les informations si l'on coupe la tension d'alimentation
Le BIOS en mémoire ROM, contient le programme de démarrage d'un PC. Actuellement, il est conservé dans une mémoire de type Eprom ou Flash Rom. Ce BIOS est apparu avec l'ordinateur à base de microprocesseur 286 d'IBM, c'est une programmation spécifique au PC et permet certains paramétrages de l'utilisateur. Les paramétrages utilisateurs sont sauvegardés dans une mémoire. Cette mémoire de type RAM (le contenu est effacé si le circuit n'est pas alimenté) est alimentée en permanence par un pile.

On désigne les programmations spécifiques à l’électronique numérique sous le nom de firmware. Cette notion modifie notre schémas de base de l'informatique. Le flashage du BIOS permet donc de mettre dans la partie "flash Rom" une nouvelle version du firmware de votre ordinateur. Durant l'opération, la partie firmware est chargée en mémoire Ram, le temps de transférer la nouvelle version en mémoire ROM: en cas de coupure de courant durant le flashage, il est impossible de redémarrer l'ordinateur, le BIOS permettant de démarrer le PC étant absent ou incomplet.

Aucun commentaire:

Enregistrer un commentaire