ARCHITECTURE TYPE I) Architecture élémentaire II) La mémoire A) Mémoire centrale (MC) Généralités Structure générale d’un boîtier Classification des boîtiers Réalisation de la MC B) Mémoires auxiliaires C) Gestion de la mémoire D) Hiérarchie des mémoires III) L’unité centrale (UC) IV) Les bus V) Une architecture réelle : le 8086 A) Le boîtier processeur et ses 40 broches B) Architecture interne C) Adresses physiques et accès mémoire D) Segmentation mémoire E) Pile I) Architecture élémentaire : - machine de Von Neumann constituée de : - Unité centrale - Mémoire centrale - Interfaces d’entrée/sortie Unité Centrale (UC) Exécute les instructions du programme (déroulement) selon l’ordre logique voulu par le programmeur (Unité de commande); Assure le traitement des données (Unité de calcul). Mémoire centrale (MC) Mémorisation des données et du programme en cours d’exécution; Programme = ensemble d’instructions écrites par le programmeur dans un ordre logique. Interfaces d’entrée/sortie Servent à communiquer avec l’extérieur : - entrée du programme et des données - restitution du résultat Actuellement : Unité d’échanges : gère les transferts d’information entre UC et périphériques Périphériques de communication nombreux et variés : - de sortie : écran, imprimante, table traçante, périph vocaux… - d’entrée : clavier, souris, lecteur de codes barres, de cartes magn., crayon optique, écran tactile… Périphériques de stockage d’informations : mémoire externe ou auxiliaire : - disques magnétiques ou optiques - disquettes - bandes magnétiques… II) La mémoire : A) Mémoire centrale (MC) : Généralités Données mémorisées sous forme de séquences binaires obtenues par codage : Entier non signé : binaire pur Entier signé : convention C2 Réel : convention IEEE, par ex Chaîne de caractères : ASCII, par ex Compilation ou assemblage => Chaque instruction est encodée dans le langage machine et aboutit à une séquence binaire de longueur variable; Les séquences binaires obtenues pour le programme sont rangées consécutivement en MC; Données + Programme séquences binaires => MC = ensemble d’éléments mémoire; n éléments mémoire constituent un mot de n bits; mot = plus petite unité de mémoire adressable, de taille fixe sur une machine donnée; chaque mot a une adresse distincte; adressage = numérotation binaire séquentielle; adresses contenus 0 (x-1) x Le mot mémoire d’adresse x a pour contenu y y (x+1) adresse de taille n bits => 2n adresses distinctes; capacité maximum adressable : adresse n bits mot de m bits => capacité = 2n mots = 2n x m bits Capacité exprimée souvent en octets 1 octet ou byte = 8 bits Unités utilisées : - Kilo : 1 K = 210 - Méga : 1 M = 220 - Giga : 1 G = 230 - Téra : 1 T = 240 - Péta : 1 P = 250 - Exa : 1 E = 260 exemple 1 : mot = 1 octet = 8 bits taille adresse = 16 bits capacité = 216 octets = 26 Koctets = 64 Ko = 64 x 8 K bits = 512 Kbits exemple 2 : capacité = 2 Mbits mot = 1 octet 2 Mbits = 2x220 bits = 218x23 bits = 218 octets = 218 mots => adresse sur 18 bits adressage direct <=> accès à un mot quelconque à partir de son adresse, sans parcourir les précédents 2 opérations possibles sur la mémoire: lecture d’un mot d’adresse donnée <=> sortie du contenu écriture d’une information dans un mot d’adresse donnée <=> entrée de cette information Ces opérations mettent en jeu : des adresses des données des commandes Donnée : - lue en MC puis amenée dans l’Unité de calcul pour opération - écrite en MC ( résultat d’un calcul) Instruction : seulement lue en MC puis amenée dans l’UC pour y être exécutée. Remarque : une information (donnée ou instruction) peut occuper plusieurs mots contigus en mémoire => plusieurs lectures ou écritures nécessaires volatilité : quand le contenu peut être perdu temps d’accès indépendant de l’adresse = intervalle séparant le lancement d’une opération et son accomplissement = moyenne entre temps de lecture et temps d’écriture Cycle mémoire = intervalle de temps entre 2 opérations successives Cycle mémoire > temps d’accès La MC est constituée de boîtiers mémoire Structure générale d’un boîtier: Matrice de points mémoire Point mémoire = élément mémoire 1 bit Décodeur d’adresses = circuit de sélection du mot recherché 2 modes de sélection : linéaire à 2 dimensions Sélection linéaire - matrice de 2n lignes et (m + 1) colonnes - décodeur : reçoit l’adresse n bits active une de ses 2n sorties - ligne activée = mot sélectionné : (m + 1) bits - capacité = 2n mots = 2n x (m + 1) bits Sélection à 2 dimensions - (m + 1) plans - un seul bit sélectionné par plan => mot = (m + 1) bits - adresse n bits coupée en * adresse ligne (j bits) * adresse colonne (n - j bits) - chaque plan possède 2 décodeurs * décodeur ligne (active une ligne) * décodeur colonne (active une colonne) - point mémoire sélectionné : à l’intersection de la ligne et de la colonne - capacité = 2j x 2n-j = 2n mots = 2n x (m + 1) bits Tampon d’E/S - registre servant à stocker une donnée lue ou une donnée à écrire - dispose de sorties 3 états Logique de contrôle - prend en compte les commandes émanant de l’unité de commande : R(ead) : ordre de lecture W(rite) : ordre d’écriture, appliqué sur la broche de lecture notée R/W R/W = 1 => lecture commandée R/W = 0 => écriture commandée CS (Chip Select) ou CE (Chip Enable) : sélection du boîtier Sur les boîtiers de grande capacité, remplacé par : CAS : validation colonnes et RAS : validation lignes adresse ligne adresse entrée en 2 parties adresse colonne Par multiplexage, les 2 parties d’adresse sont présentées sur les mêmes broches d’adresse => moins de broches. 1er temps : adresse ligne entrée et stockée dans le tampon ligne; 2ème temps : adresse colonne entrée et stockée dans le tampon colonne. Classification des boîtiers mémoire Mémoires mortes une fois enregistré, contenu non volatile ROM (Read Only Memory) : contenu programmé par le constructeur Seule opération possible : lecture Utilisées pour les programmes résidents PROM (Programmable ROM) contenu programmable par l’utilisateur REPROM (Reprogrammable ROM) effacement et reprogrammation possibles mais lents. Mémoires vives lecture et écriture possibles. SRAM (Static Random Access memory) point mémoire RAM ; utilisée dans les mémoires caches; DRAM (Dynamic RAM) régénération périodique de leur contenu ; de plus grande capacité que les précédentes; SDRAM (Synchronous DRAM) synchronisée avec le processeur (=> pas d’attente). Quelques exemples de boîtiers : - pas de broche R/W => mémoire morte - broche de programmation => REPROM - broche R/W => RAM - nombre de broches d’adresse = taille de l’adresse sauf si multiplexage d’adresse - pour une mémoire morte : nombre de broches de donnée = taille de la donnée lue - pour une mémoire vive : Nombre de broches de donnée en entrée Nombre de broches de donnée en sortie (donnée à écrire) = (donnée lue) = taille de la donnée - broches CAS et RAS <=> multiplexage de l’adresse => taille adresse = 2 x nombre de broches d’adresse Réalisation de la mémoire centrale Puces ou boîtiers répartis en cartes; MC = ensemble de cartes. Composition du mot mémoire : un bit par carte mot = ensemble des bits de même adresse sur chaque carte adresse du mot = n° de la puce + adresse dans cette puce un bit par puce mot = ensemble des bits de même adresse dans un groupe de puces adresse du mot = n° du groupe + adresse dans chaque puce du groupe plusieurs bits par puce mot = ensemble de bits d’une même puce l’organisation, aucune influence sur la capacité, ni sur la longueur de l’adresse. Seule change la répartition des bits d’adresse. B) Mémoires auxiliaires ou de masse non volatiles de capacité bien supérieure d’accès lent peu chères plus volumineuses - - Disques magnétiques Disques amovibles : enfermés dans des boîtiers anti-chocs amovibles; Unité de disques = empilement de disques dont les 2 faces sont magnétisables; Chaque face de disque est constituée de pistes concentriques de même capacité => la densité en bpi (bit per inch) augmente en approchant de l’axe; Chaque piste est divisée en secteurs (délimités par un angle); Les têtes de lect/écrit ‘planent’ au dessus de la surface => propreté absolue atterrissage de têtes destruction des données; Déplacement simultané des têtes de L/E => accès simultané à un cylindre = ensemble de pistes situées sur la même verticale; Formatage physique = constitution des pistes et des secteurs; Formatage logique = enregistrement d’informations nécessaires à la gestion du disque (notamment repérage des zones endommagées); Accès semi-séquentiel : positionnement direct sur la piste; parcours séquentiel de la piste jusqu’au secteur recherché. Quelques chiffres. Disquettes 31/2 Disque souple en mylar recouvert d’oxyde magnétisable 2 faces enregistrables Cliquet ouvert = écriture impossible Densité : double, haute, extra haute Découpage en pistes et secteurs Formatages physique et logique confondus Disques optiques numériques (DON) - Enregistrement : pour un 1, un rayon laser crée : un trou ou cuvette dans une surface qui fond sous la chaleur émise : CD-ROM (Compact Disc ROM : enregistrés en usine) une déformation ou bulle : WORM (Write Once Read Many : écrits une seule fois, lus à volonté) une polarisation de la lumière réfléchie (selon le sens de magnétisation du support) modifiable (disques optiques réinscriptibles) un changement d’état (amorphe, absorbant la lumière cristallin, réfléchissant la lumière) réversible (disques magnéto- optiques) - Les DVD (Digital Versatile Disk) : nouvelle technologie de laser (rayon bleu, plus précis => diminution de l’espace inter-pistes) Bandes magnétiques et cartouches - servent à l’archivage des informations - accès séquentiel C) Gestion de la mémoire : Cycle UC (= temps d’une opération élémentaire) très inférieur au cycle mémoire mémoire trop lente Mémoire cache primaire - intégrée au microprocesseur - extrêmement rapide - très petite (quelques Ko) Mémoire cache secondaire - très rapide - faible capacité (jusqu’à 512 Ko) mémoires caches : SRAM Mémoire entrelacée - Division de la MC en blocs indépendants => possibilité de lancer des opérations simultanées sur des blocs distincts <=> recouvrement de cycles mémoire; - Entrelacement <=> placer les informations d’adresses successives dans des blocs différents. MC trop petite => - mémoire virtuelle = MC + mémoires auxiliaires => adresse virtuelle adresse physique réelle - technique de la pagination une page = volume précis d’informations En MC, à un instant donné : pages nécessaires au programme en cours d’exécution Autres pages : stockées en mémoire auxiliaire L’utilisateur croit disposer d’une MC très grande. MC partagée entre plusieurs utilisateurs => protection - partitionnement (fixe ou dynamique) de la MC - segmentation : programme divisé en N segments - segment = une entité logique (bloc de données, procédure,…) dont on peut protéger l’accès en écriture (procédure) ou depuis un autre utilisateur D) Hiérarchie des mémoires : Différents niveaux de mémoire de rapidité et de coût : Registres de l’UC; Mémoire cache primaire; Mémoire cache secondaire; Mémoire centrale; Mémoire d’appui, dans les gros ordinateurs, mémoire à semi-conducteurs, tampon entre MC et mémoires auxiliaires. III) L’unité centrale : - boîtier microprocesseur : exemples : 8086 boîtier à 40 broches 80486DX boîtier à 168 broches - constituée de : Unité de commande ou de contrôle Unité arithmétique et logique Registres Unité de commande Structure - compteur ordinal (CO) contient l’adresse de la prochaine instruction à exécuter; - registre d’instruction (RI) contient l’instruction en cours d’exécution; - séquenceur/décodeur; - horloge pour la synchronisation. Rôle : Déroulement d’un programme - ordre de recherche de la prochaine instruction ( ordre de lecture en MC) - stockage de cette instruction dans registre RI (de taille N mots = taille max d’une instruction) - mise à jour du CO : CO := CO + n avec 1 n N - décodage de cette instruction Exécution de l’instruction décodée grâce à des commandes : - émises par le séquenceur - synchronisées sur l’horloge - envoyées aux autres unités Séquenceur microprogrammé chaque type d’instruction du langage machine <=> un µ-programme composé de µ-instructions µ-programmes stockés dans une ROM interne à l’unité de commande. Unité Arithmétique et Logique Structure (polyvalente) UAL Registre accumulateur Registre d’état Rôle : - arithmétiques logiques de décalage mise à jour des indicateurs d’état notamment selon le résultat calculé opérations Registre d’état = ensemble des indicateurs d’état; Indicateur d’état = bit à 0 ou 1. Réalisation d’une addition Registres * 2 catégories : registres banalisés registres spécialisés registres banalisés : pour stockage temporaire d’opérandes et de résultats de calcul avant rangement en MC registres spécialisés : rôle particulier dans le calcul des adresses de données ou d’instructions en relation avec les modes d’adressage Certains registres (index et base) peuvent être banalisés. IV) Les bus – architecture générale d’un processeur : Bus spécialisé : de données d’adresses de commandes Bus d’adresses : unidirectionnel car les adresses circulent de l’UC vers la MC Bus de données : bidirectionnel les données circulent : - de l’UC vers la MC (données à écrire) - de la MC vers l’UC (données ou instructions lues) Bus interne à l’UC Bus externe ou bus d’extension Mode de fonctionnement : synchrone ou non (avec le processeur) Bus parallèle : de largeur n bits <=> n bits transportés en // Bus série : transfert bit par bit Processeur vrai p bits p bits = taille du mot mémoire = largeur du bus externe des données Processeur faux p bits p bits = taille du mot mémoire > largeur du bus externe des données V) Une architecture réelle : le 8086 A) Le boîtier processeur et ses 40 broches: Entrées/sorties : AD0…AD15 : 16 entrées ou sorties de données ou 16 sorties d’adresses 16 broches communes adresse/donnée => multiplexage bus de données et bus d’adresses; Sorties : A16, …A19 : 4 bits de forts poids de l’adresse => adresse 20 bits; 8086 en mode minimum. B) Architecture interne : RI remplacé par une file d’attente de 6 octets (organisation FIFO : First In, First Out); 2 parties : - Unité d’exécution (UE) : exécute les instructions arithm. et logiques - Unité d’interface bus (UIB) : recherche en avance des octets d’instructions et les stocke dans la file d’attente; Mode pipe-line <=> La partie génération des adresses d’instructions de UIB travaille en parallèle avec la partie UE pour la recherche d’instructions en MC. => accélération des traitements (UE n’attend pas); => et bus presque toujours actif. Cependant, UE interrompt UIB et doit attendre en cas de : - Rupture de séquence dans les instructions; - Entrée/Sortie; - Lecture ou d’écriture de donnée en MC. 14 Registres de taille 16 bits; Registres généraux - de données AX, BX, CX, DX - d’index SI et DI - pointeurs sur la pile SP et BP accessibles au programmeur (rôle général), ont souvent un rôle spécifique : - AX et DX opérandes implicites (dans les et / et les E/S); - CX est compteur pour instructions de décalage et sur chaînes de caractères; - BX et BP sont des registres de base pour l’adressage basé; - SI et DI sont des registres d’index pour l’adressage indexé (Source, Destination Index); - SP est le registre pointeur sur sommet de pile (Stack Pointer); - BP est un registre pointeur sur un endroit quelconque de la pile (Base Pointer). Registres de données Chacun se divise en 2 registres de 8 bits ex : AX 15 … … … …8 7 … … … … 0 PF de AX pf de AX registre AH registre AL pf = poids faibles PF = poids forts De même : BX CX DX BH et BL CH et CL DH et DL Registre d’état : contient 9 indicateurs d’état Autres bits non réservés ou non définis 6 indicateurs informent sur le dernier résultat calculé par l’UAL 3 autres sont dits de contrôle 4 Registres de segment : CS, DS, ES et SS Ils repèrent 4 segments en MC - le segment de code repéré par CS - le segment de données repéré par DS - le segment de données supplémentaires repéré par ES (extra segment) - le segment de pile repéré par SS (stack) Compteur ordinal constitué de 2 registres CS et IP qui forment l’adresse segmentée (CS : IP) de la prochaine instruction à exécuter C) Adresses physiques et accès mémoire taille adresse physique = 20 bits plus petite unité adressable = 1 octet => capacité adressable = 220octets = 1Mo mot = 16 bits; double mot = 32 bits. Adresse d’un mot (ou d’un double mot) = adresse de son octet le plus bas; Contenu d’un mot (ou d’un double mot) : les poids faibles sont rangés à l’adresse la plus basse; MC structurée en 2 bancs : un pour les adresses paires, un pour les adresses impaires; Accès à : - un octet - un mot (16 bits) d’adresse paire d’adresse impaire (plus long) D) Segmentation mémoire : Segment = portion de mémoire de 216 octets = 64 Ko L’adresse physique d’un segment est un multiple de 16 => 20 bits dont les 4 derniers bits sont à 0; Chaque registre de segment reçoit l’adresse physique du segment correspondant, débarrassée de ses 4 derniers 0. Cette adresse tronquée est appelée base de segment; A un instant donné : 4 segments accessibles au programmeur (soit 4 * 64 Ko) : - Le segment de code CS - le segment de données DS - le segment de données supplémentaires (extra) ES - le segment de pile (stack) SS Adressage des octets depuis le début de la MC : adresse physiques 20 bits Si on numérote les 216 octets d’un segment : 0 < numéro < (FFFF)16 Ce numéro s’appelle déplacement (ou adresse réduite) et a pour taille 16 bits. C’est une adresse relative au début du segment. Une adresse a 3 formes possibles : soit adresse physique ou absolue (20 bits); soit adresse segmentée (ou adresse logique) en 2 parties (2 16 bits), s’écrit : (base de segment : déplacement); soit adresse réduite ou offset (16 bits) la base de segment étant implicite forme la plus fréquente dans les instructions => gain de 4 bits sur chaque adresse. Calcul de l’adresse physique à partir de l’adresse segmentée: Ex1 : une instruction a pour adresse réduite ( 0023 )16 => son adresse segmentée = ( CS : 0023 )16 CS = ( 1A02 )16 => son adresse physique = 1A020 + 0023 = (1A043)16 Ex2 : une variable a pour adresse réduite ( 0030)16 => son adresse segmentée = ( DS : 0030 )16 Base de segment implicite : DS = ( 2CFB )16 => son adresse physique = 2CFB0 + 0030 = ( 2CFE0 )16 Interprétation du contenu d’un double-mot. 4 registres de segment => Le programmeur a accès à 4 segments au plus à un instant donné (soit 4 64Ko). Cas particuliers : - 2 registres de segment peuvent repérer le même segment; - 2 segments peuvent se recouvrir partiellement. E) Pile : zone de mémoire vive (segment) organisée en LIFO (Last In, First Out) utilisée : par le système pour mémoriser des événements et des contextes selon un ordre chronologique Exemples : Le système sauvegarde : l’adresse de retour à la procédure appelante si appel de procédure le contenu du registre d’état si programme interrompu soit par le programmeur Exemples : Le programmeur l’utilise : - pour passer des paramètres à une procédure - en guise de registres de travail supplémentaires 2 opérations sur la pile : empiler (PUSH) dépiler (POP) Le pointeur sur sommet est automatiquement: décrémenté si PUSH incrémenté si POP La famille iAPX 8086 vrai 16 bits 8088 faux 16 bits : - bus interne 16 bits - bus externe 8 bits 80286 vrai 16 bits 4 fois plus rapide - horloge jusqu’à 20MHz - bus d’adresse 24 bits => 16 Mo adressables - gestion mémoire intégrée => 1 Go de mémoire virtuelle 80386DX vrai 32 bits - horloge jusqu’à33MHz - bus d’adresse 32 bits => 4 Go adressables - mémoire virtuelle de 64 To 80486DX vrai 32 bits intégrant : - une unité de calcul pour les entiers - une unité de calcul pour les flottants - une mémoire cache de 8 Ko Pentium - Bus de données externe 64 bits - Registres 32 bits - 2 unités d’exécution indépendantes de 32 bits capables de fonctionner simultanément (architecture superscalaire) - 2 caches de 8 Ko pour instructions et données séparées - 2 pipe-lines de 5 étages permettant chacun d’exécuter en parallèle : chargement, décodage, génération d’adresse, exécution, écriture du résultat 5 instructions traitées simultanément - horloge jusqu’à 200MHz Pentium Pro - même architecture que le Pentium - 2 caches de 8 Ko pour données et instructions séparées - 256 ou 512 Ko de cache secondaire intégré - En plus de la technique pipe-line, anticipation du traitement des instructions - fonctions de gestion du multimédia (processeur MMX traite plusieurs données dans un seule instruction) Pentium II - même architecture que le Pentium Pro - nouveau bus DIB - horloge jusqu’à 400 MHz