Les ordinateurs : de la logique aux calculateurs Historique -3000 : Chine, l'octagone à trigramme -500 : Moyen Orient, L'abaque et le boulier 1642 : Pascal, met au point la pascaline 1666 : Moreland, la multiplication par additions successives. 2 Historique 1833 : Babbage, imagine la machine à différence puis une machine analytique (Unité de Contrôle, Mémoires, Registres, Cartes perforés). Jamais terminée. 1854 : Boole, Algèbre de Boole. 3 Historique 1904 : John Fleming, Diode (tube à vide) 1937 : Alan Turing publie des articles sur les fonctions calculables 1940 - 1945 : Calculateurs mécaniques et à relais électriques. 1945 : John Von Neumann, définit l'architecture de Von Neumann (Princeton) toujours utilisée de nos jours. 1946 : ENIAC, première génération, 30 tonnes,72 mètres carrés, 140 Kwatts, 18000 tubes. 350 multiplications/secondes. 500 additions/seconde. Programmation par fils. Apparition de la définition du bogue (bug). 4 Historique 5 Historique 1947 : Invention du transistor (interrupteurs commandés électriquement) 1957 : Langage FORTRAN/LISP 1958 : Circuits intégré par Texas Instrument . 1959 : Circuit intégré inventé par Jack Kilby (Texas Instruments). Principe : fabriquer dans un même bloc de semi-conducteur (une puce) plusieurs composants (résistances, condensateurs, transistors). 1960 : Premier jeu sur ordinateur (space war). 6 Historique IB IC Fonctionnement d’un transistor : transient resistor VCE commande IC Saturé : 1≠0 4 Confusion des niveaux logiques Modification de la caractéristique en fonction de différents facteurs : T, vieillissement, IB… 3 2 Machine à 5 niveaux 1 0 Bloqué :0 VCE Utilisation du binaire pour plus de sécurité 7 Historique 1965 : Loi de Moore. Complexité des circuit x2/2ans. 8 Historique 1968 : Ordinateurs à circuits intégrés (troisième génération) et langage PASCAL. Notion de Multiprogrammation de temps partagé, de temps réel. 1971 : Intel lance le premier microprocesseur (60 000 inst/s 4004) et la mémoire intégré, VLSI. 1978 : Intel lance le 8086, 330 000 instruction/sec. 1982 : Intel lance le 80286, 900 000 instructions par seconde. 1986 : premières machines parallèles. 9 Machine de Von Neumann ♦ Les 3 grandes parties dans un ordinateur généraliste selon Von Neumann : ENTREE SORTIE MEMOIRE PROCESSEUR BUS Processeur : Unité de traitement de l’information Mémoire : Unité de stockage des informations (Instructions , Données) E/S : Unité permettant de communiquer avec le processeur et la mémoire le stockage de données, Cet ordinateur généraliste doit être capable de : le traitement des données, le mouvement des données. 10 Les Bus Le regroupement de n lignes (fils) permettant l’envoi en parallèle d’un mot de n bits entre deux composants n Composant 1 Composant 2 Rq : la longueur de ce BUS va conditionner la vitesse du dialogue entre composant 11 Les Mémoires 12 Les Mémoires Une mémoire est un dispositif de stockage de l’information. Comme il est possible de stocker plusieurs données (instructions) dans une mémoire, il est nécessaire d’organiser le stockage de celle-ci. Pour cela, on attribue une adresse à chaque case mémoire. Adresse Mémoire 2xxxH 2000H mot k+2 mot k+1 mot k 1 0 1 0 0 1 1 0 Instruction ou donnée mot 3 mot 2 mot 1 Pour écrire/lire une donnée en mémoire, il faut être capable de définir le type d’action, l’ adresse et assurer le transport de la donnée : Besoin de 3 BUS BUS d’ADRESSE, BUS de DONNEES, BUS de CONTRÔLE 13 Les mémoires COMPTAGE DE LA MÉMOIRE Les bits qui sont groupés par 8 sont appelés octets (byte en anglais). Les octets (o) sont groupés de la manière suivante: Nom Kilo-octets : Ko La bonne manière La manière paresseuse 210 = 1,024 octets 103 (erreur = 2.4%) Mega-octets : Mo 220 = 1,048,576 o 106 (erreur = 4.8%) Giga-octets : Go 230 = 1,073,741,824 o 109 (erreur = 7.4%) Téra-octets : To 240 = 1,099,511,627,776 o 1012 (erreur = 9.9%) Péta-octets : Po 250 = 1,125,899,906,842,674 o 1015 (erreur = 12.6%) 14 Les Mémoires Contrôle (écriture ou/et lecture) Sélection (Chip select) Donnée (m bits) Mémoire Adresse (n bits) Capacité ? 15 Les mémoires Taille des données (non compressées) : 1 Octet Valeur de 0 à 255, ou a un caractère 2 Octets Valeur de -32768 à 32767 ou un caractère de n'importe quel système d'écriture dans le monde 8 Octets Virgule flottante +/- valeur représentant 16 chiffres de précision (nombre scientifique) 1 Ko Une page moyenne de texte ou un icône standard couleur 1 Mo 1,000 pages de texte, 1 écran graphique pleine page, 6 s de son qualité CD. 1 Go 1 million de pages de texte, 1,5 h de son qualité CD, 50 s de vidéo non compressé. 1 To La librairie du congrès US complète sous forme de texte (approximativement), 62 jours de musique continue, 14 heures de vidéo non compressé 1 Po Probablement plus de texte que tout ce qui a été produit dans l'histoire de l'humanité , 170 années de musique, 19 mois de vidéo. 16 Les Mémoires On définit les paramètres suivants pour une mémoire • Sa technologie • Son format Le format représente le nombre de bits de la donnée (m). • La volatilité Représente le temps pendant lequel la mémoire retient l’information. • Le type d’accès Accès séquentiel : le temps dépend de la position de l'information (bande magnétique). Accès direct : il est possible d'accéder à une information quelconque en un temps constant. • Le nombre de cases mémoires Correspond au nombre de données pouvant être stockées (N). Ce nombre est donné par la taille du bus d’adresse de la mémoire (n). N = 2n • Sa capacité Le nombre d’octet pouvant être mémorisé (C). • La bande passante Débit en bit (exprimé en octet). Produit de la largeur du bus de donnée par sa fréquence. Ainsi, un bus de 16 bits et une fréquence de 800MHz donne une bande passante de : 1.28 1010 b/s En Go : (800 106 *16/8)/230 = 1.49 Go/s 17 Les mémoires • Le temps d’accès ou temps de latence Délai nécessaire pour accéder à l’information. La mémoire vive d’un processeur est mémoire rapide (~10 ns) alors que la mémoire d’un disque dur (~1ms). A l’échelle humaine, 1s pour l’un, 1 jour et 5 heures pour l’autre. De plus, ces informations sont utilisées par le processeur après le passage par le chipset (retard) d’où la nécessité d’avoir un espace mémoire très rapide (la mémoire cache). Bus d’adresse Bus de données • Le temps de cycle C'est la durée minimale séparant 2 accès consécutifs à la mémoire (en lecture ou en écriture). 18 Les différents types de mémoires électroniques RAM : Random Access Memory Random : on peut accéder directement à n’importe quelle adresse de la mémoire Il est possible de lire et d’écrire des données à volonté. Ces mémoires sont volatiles, elles perdent leur contenu lorsqu’elles ne sont plus alimentées. Leur temps d’accès est très petit. Mémoire de données servant à sauvegarder les données traitées par un programme • RAM statique SRAM Les informations sont mémorisées par des bascules d’ou une volatilité d’une 100 heures tant que l’alimentation est présente. Temps d’accès ~10 ns. Capacité assez faible. Utilisée pour la mémoire cache des processeurs. • RAM dynamique DRAM Cette technologie oblige à rafraîchir les données (indisponibilité toutes les 15 ms). Temps d’accès ~65 ns. Capacité plus importante que les SRAM. 19 Evolution des performances de la mémoires Performances des différentes mémoires RAM Performances comparées de la RAM et du processeur 1000 u es q i na m y D M RA eur s s s e e d ro c p ité s u n d De ss e e t i V Dynamiques M A R es d e ss e it V 100 10 1 1980 1985 1990 1995 Transfert de l’information de la mémoire vers le processeur est le facteur limitant des performances 2000 20 Les différents types de mémoires électroniques • ROM Read Only Memory Mémoires mortes On ne peut que lire les données. Elles conservent leur contenu lorsqu’elles ne sont plus alimentées. Destruction des diodes Le courant ne peut plus passer ROM PROM FPROM EPROM OTP UVPROM EEPROM EPROM FLASH la mémoire servant à stocker le programme 21 Les différents types de mémoires électroniques ROM PROM Ces mémoires ont été écrites une fois par le fabricant. Les informations contenues sont lisibles mais non-modifiables. Ce sont des diodes (ou transistors) disposées sur un réseau de lignes et de colonnes. Réalisée à partir de transistors bipolaires dont la liaison entre émetteur et la colonne sont effectuées par l'intermédiaire d'un fusible. FPROM (Fuse PROM) Ces mémoires sont livrées non enregistrées par le fabricant. Une fois programmées, les données ne sont plus modifiables. OTP (One Time Prom) Programmable une seule fois. EPROM (Erasable PROM) Ces mémoires livrées vierges sont re-programmables à volonté 22 Les différents types de mémoires électroniques Les mémoires : DIFFERENTS TYPES DE MEMOIRES UVPROM (ou EPROM) Effaçable aux UV (10 à 20 minutes d ’exposition). Effacement total de la mémoire. EEPROM (Electricaly EPROM) Effaçable et programmable électriquement. Effacement adresse par adresse. Coût de fabrication élevé. EPROM FLASH Conçue avec une technologie au carrefour de la DRAM, SRAM et EEPROM, elle possède des caractéristiques de rapidité (10 Mo/s) et de non-volatilité intéressante. C’est une mémoire effaçable et programmable électriquement par blocs en un temps très bref (FLASH) mais n’est reprogrammable que 105 fois. Elle exige un transistor par point de mémoire (2 pour EEPROM) donc elle est peu volumineuse (1 Go). Un peu chère. 23 Les Mémoires Magnétiques Ce sont des mémoires assez lentes mais qui peuvent être de grandes capacités • Les disquettes 3 p ½ (floppy) : en voie de disparition • Les disque durs (HDD) est constitué de plusieurs plateaux empilés, entre lesquels se déplace un bras comptant plusieurs têtes de lecture. Chaque plateau est recouvert d'une surface magnétique sur ses deux faces et tourne à une vitesse comprise entre 4000 et 15000 tr/min. La tête de lecture/écriture est composée par un aimant autour duquel est enroulée une bobine. Pour écrire, on fait passer un courant électrique dans la bobine ce qui crée un champ magnétique. Les lignes de champ magnétique traversent la couche d'oxyde et orientent celuici en créant de petits aimants dont le sens est donné par le sens du courant dans la bobine. Pour lire, on fait passer la tête de lecture/écriture sur le support magnétisé qui crée un courant induit dans la bobine dont le sens indique s'il s'agit d'un 0 ou d'un 1. 24 Les Mémoires Magnétiques La piste est trop longue pour stocker convenablement des données : Division en plusieurs contenant une piste secteurs Utilisation de plusieurs plateaux (cylindre) pour augmenter la capacité Les systèmes d’exploitation (Windows, Unix, …) actuels utilisent différents types d’organisation (systèmes de fichiers) : FAT16, FAT32, NTFS, EXT2, EXT3… 25 Les Mémoires Optiques • Les CD : Un CD-ROM est un disque de 12 cm de diamètre composé de plusieurs couches superposées : • une couche principale en polycarbonate, un plastique résistant et laissant passer la lumière • une couche métallique réfléchissante composée de plats et de creux • une couche de vernis protecteur qui vient protéger le métal de l'agression des UV Lors d’un passage devant un creux, la lumière du laser est fortement réfractée, de telle sorte que la quantité de lumière renvoyée par la couche réfléchissante est minime. Alors que pour un passage devant un plat, la lumière est pratiquement entièrement réfléchie. Contrairement aux disques durs, un CD n'a qu'une seule piste organisée en spirale. 26 Les Mémoires Optiques • Les DVD : Le DVD-ROM (Digital Versatile Disc - Read Only Memory) est apparu en 1997. En effet, la lecture/écriture est effectuée à partir d’un laser rouge (650 et 635 nm) et permet d’obtenir des creux beaucoup plus petits. Les deux longueurs d’ondes utilisées permettent de lire/écrire sur des DVD "double couche". Ces disques sont constitués d'une couche transparente et d'une couche réflexive et permettent donc de stocker encore plus d’informations sur un seul CD. 27 Les Mémoires Optiques Les capacités : 28 Rôle des différents types de mémoires Mémoire centrale (Électronique) Rapides Peu volumineuses Directement adressables Mémoire de masse (Magnétique ou optiques) Non volatiles Peu chères Grandes capacités Assez volumineuses lentes + - Généralement volatiles Chères Faibles capacités 29 Rôle des différents types de mémoires Les registres sont les éléments de mémoire les plus rapides. Ils sont situés au niveau du processeur et servent au stockage des opérandes et des résultats intermédiaires. La mémoire cache est une mémoire rapide de faible capacité destinée à accélérer l’accès à la mémoire centrale (RAM) en stockant les données les plus utilisées. La mémoire principale est l’organe principal de stockage des informations. Elle contient les programmes (instructions et données) et est plus lente que les deux mémoires précédentes. La mémoire d’appui sert de mémoire intermédiaire entre la mémoire centrale et les mémoires de masse. Elle joue le même rôle que la mémoire cache. La mémoire de masse est une mémoire périphérique de grande capacité utilisée pour le stockage permanent ou la sauvegarde des informations. Elle utilise pour cela des supports magnétiques (disque dur, ZIP) ou optiques (CDROM, DVDROM). 30 Les Entrées-Sorties BUS d’EXTENSION Disque dur BUS IDE MODEM USB MEMOIRE PROCESSEUR Souris USB ENTREES SORTIES Joystick série RS232 Imprimante Port parallèle Bus de contrôle Bus de données Bus d’Adresse 31 Les Bus d’Extension • IDE : Disques durs, CDROM, Graveur • DMA : Disques durs (Ultra DMA) • USB 1 et 2 : Souris, clavier, Caméra, CDROM… • IEEE 1394 : Firewire = concurrent USB2 (Vidéo) • AGP : Carte graphique Changement très rapide des BUS d’extension 32 Les Bus d’Extension Carte Mère de PC (ASUS A7N8X) 33 Les Bus d’Extension Deux types de communication : Périphérique de sortie Interface // Périphérique de sortie Interface série Périphérique d'entrée Périphérique d'entrée Communication parallèle : • rapide Communication série : • plus lent (RS232, USB) • utilisable sur de courtes distances (mètre) • Utilisable sur de longues distances 34 Liaison processeur/mémoire La mémoire contient les instructions et les données nécessaire à l’exécution d’un programme MEMOIRE 1 0 0 0 1 0 1 1 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 . . . . . . . . . . . . . . . . 0001h 0 0 0 1 1 0 0 0 0000h 1 1 1 0 0 1 0 1 PROCESSEUR Bus de contrôle Bus de données Bus d’Adresse 35 Le processeur MEMOIRE PROCESSEUR UNITE DE TRAITEMENT Elle contient les unités fonctionnelles permettant de réaliser les opérations arithmétiques et logiques ainsi qu’un ensemble de registres. ENTREES SORTIES Bus de contrôle Bus de données Bus d’Adresse UNITE DE CONTROLE Elle permet de "séquencer" le déroulement des instructions. Elle effectue la recherche en mémoire de l'instruction, le décodage, l’exécution, la préparation de l'instruction suivante. L'unité de contrôle élabore tous les signaux de synchronisation internes ou externes (bus de contrôle) au processeur 36 Les étapes de l’exécution d’une instruction L’exécution schématique d’une instruction est la suivante : Fetch, Decode, Execute, Save 1. Chargement d’une instruction de la mémoire (fetch : chercher), 2. Analyse l'instruction (decode : …), 3. Exécution de l’instruction (execute : …) 4. Sauvegarde du résultat (save : …) 37 Les étapes de l’exécution d’une instruction Processeur UNITE DE TRAITEMENT UNITE DE CONTROLE Registre de données Bus de Données Mémoire Registre de contrôle Bus de Contrôle Registre d’adresse Bus d’Adresse 38 Les étapes de l’exécution d’une instruction Etape 0 : un registre appelé Compteur Ordinal contient l’adresse de la prochaine instruction à exécuter (Program Counter PC) UNITE DE TRAITEMENT UNITE DE CONTROLE Registre de données Bus de Données Compteur Ordinal Registre de contrôle Bus de Contrôle Registre d’adresse Bus d’Adresse 39 Les étapes de l’exécution d’une instruction Etape 1 : Chargement (Fetch) de l’instruction consiste à transférer le contenu de la mémoire dont l’adresse est contenu dans le CO dans le Registre d’Instruction. UNITE DE TRAITEMENT UNITE DE CONTROLE Bus Interne Registre de données Bus de Données Registre d’Instruction Compteur Ordinal Registre de contrôle Bus de Contrôle Registre d’adresse Le CO est incrémenté Bus d’Adresse 40 Les étapes de l’exécution d’une instruction Etape 2 : l’analyse (decode) du premier octet permet au processeur de connaître le nombre d’octets que comporte l’instruction ainsi que l’opération élémentaire a exécuter UNITE DE TRAITEMENT UNITE DE CONTROLE Bus Interne Registre de données Bus de Données Registre d’Instruction Décodeur Instructions Séquenceur registre de contrôle Bus de Contrôle Compteur Ordinal Registre d’adresse Bus d’Adresse 41 Les étapes de l’exécution d’une instruction Etape 3 : le processeur effectue (execute) le traitement correspondant et positionne le Registre d’État (PSW). UNITE DE TRAITEMENT UNITE DE CONTROLE Bus Interne Accu A Accu B Registre d'état PSW Registre de données Bus de Données Registre d’Instruction Décodeur Instructions Séquenceur Compteur Ordinal UAL Registre de contrôle Bus de Contrôle Registre d’adresse Bus d’Adresse 42 L‘Unité de Traitement Accu A Accu B Registre d'état PSW L’UAL (Unité Arithmétique et Logique). Deux registres de travail contenant une donnée ou un résultat : Accumulateurs A et B un Registre d‘Etat (PSW : Program Status Word) comportant des indicateurs mémorisant la façon dont s’est effectuée l’opération élémentaire : PSW du 8052 de INTEL UAL CY UAL Basique AC F0 RS1 RS0 OV P • CY : Retenue (Carry) : à 1 lorsqu'une opération a générée une retenue. • AC : Demi Retenue (Auxilary Carry) : à 1 lorsqu'une opération a générée une retenue au niveau du 4ème bit. • OV : Débordement (Overflow) : à 1 lorsqu'une opération a provoqué un débordement • P : Parité (Parity) : à 0 si le contenu de A est paire • 43 UAL cablée 4 bits A=A0A1A2A3 B=B0B1B2B3 Entrées de Sélection de l’opération 16 opérations possibles UAL P A=B CY F=F0F1F2F3 44 Exécution d’un Programme UT Mémoire LirePériph - clavier 0 E/S UC 45 Exécution d’un Programme Code clavier LirePériph - clavier 1 Clavier Code clavier 46 Exécution d’un Programme Code clavier+163 Code clavier Add - 163 12 47 Exécution d’un Programme Code clavier+163 écrire - écran 3 écran Code clavier+163 48 Jeu d’instructions Définition : Le jeu d’instruction décrit l’ensemble des opérations élémentaires que le processeur pourra exécuter. Il va déterminer une partie de l’architecture du processeur et notamment celle du décodeur d’instruction (séquenceur). Type d’instruction : Les instructions que l’on retrouve dans chaque microprocesseur peuvent être classées en 4 groupes. • Transfert de données : de mémoire à mémoire, de registre à registre, de registre à mémoire , de mémoire à E/S, de registre à E/S, … • Opérations arithmétiques : addition, soustraction, division, multiplication,… • Opérations logiques : ET, OU, NON, NAND, décalage, conversion de format, comparaison, test, … • Contrôle de séquence : branchement conditionnels ou non, appel de fonction, … 49 Jeu d’instructions Codage d’une instruction : une instruction est codée sur un nombre entier de mot mémoire afin de faciliter son décodage par le processeur. Une instruction est découpée en deux parties : Zone Données ou Adresse Zone Opération Code Opération Un mot Instruction Assembleur du 8052 « Mnémonique » Opérande Un (ou plusieurs) mot Code binaire correspondant (74 04)(16) : 0111 0100 0000 0100 MOV A,#4 Rq : Certaines instructions n’ont pas besoin d’opérande Code Op Code Op Opérande Code Op Opérande 1 Opérande 2 50 Jeu d’instructions La longueur du code opération détermine le nombre d’instructions codables La longueur de l’instruction détermine le temps de traitement de l’opération (transfert mémoire et décodage de l’instruction) Avec des instructions de 16 bits, on peut coder : Code 1 1 1 1 étend le Code Opérationnel 0 0 0 0 Opérande 1 Opérande 2 Opérande 3 1 1 1 0 Opérande 1 Opérande 2 Opérande 3 15 Instructions 1 1 1 1 0 0 0 0 Opérande 1 Opérande 2 1 1 1 1 1 1 1 0 Opérande 1 Opérande 2 1 1 1 1 1 1 1 1 0 0 0 0 Opérande 1 1 1 1 1 1 1 1 1 1 1 1 0 Opérande 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 Instructions 60 Instructions 15 Instructions Le codage dépend des besoins en instructions 15 Instructions 51 Jeu d’instructions Des études statistiques ont montré que dans 80% des programmes, seulement 20% du jeu d’instruction est utilisé. Les opérations les plus usitées sont les échanges mémoire/processeur et appels à des sous-programmes. D’ou deux philosophies différentes pour le codage des jeux instructions : Les processeurs CISC : Des instructions de longueurs différentes, parfois (Complex Instruction Set Computer) longues. Un jeu d’instructions très riche mais lent à exécuter (temps d’exécution d’une instruction variant). Programme réduit Moins d’accès mémoire Les processeurs RISC : Des instructions de la même longueurs, courtes d’ou un (Reduced Instruction Set Computer) jeu d’instructions limités mais très rapide à exécuter (temps d’exécution d’une instruction constant). Programme long Beaucoup d’accès mémoire 52 Jeu d’instructions Comparaison des performances relatives des philosophies en fonction des temps d’accès mémoire. Les processeurs RISC associés à des mémoires rapides sont plus performants 53 Jeu d’instructions + La simplicité des processeurs RISC fournit deux autres avantages : • le coût du développement, • la surface de silicium sont notablement réduits (20% au lieu de 50%). Plus simple un processeur RISC nécessite moins de temps et moins de main d'oeuvre pour sa conception et sa mise au point. Par exemple le processeur ARM a été élaboré en dix-huit mois par une équipe de quatre personnes (6 hommes-ans), le 80386 d'Intel a demandé 100 hommes-ans. - Par contre, le développement des compilateurs est beaucoup plus long pour les processeurs RISC car plus difficile de passer d’un langage évolué au jeu d’instruction réduit. Actuellement, on essaie de mélanger les deux philosophies pour obtenir tous les avantages 54 Les étapes de l’exécution d’une instruction La synchronisation UNITE DE TRAITEMENT UNITE DE CONTROLE Bus Interne Accu A Accu B Registre d'état PSW Registre de données Bus de Données Registre d’Instruction Décodeur Instructions Séquenceur Compteur Ordinal UAL Registre de contrôle Bus de Contrôle Registre d’adresse Bus d’Adresse 55 Le décodage des instructions Les liaisons entre les éléments sont commandées par des interrupteurs : eMem Bus Interne Registre de données eRI eAcc eBcc Registre d’Instruction Accu A Accu B eCO+1 Décodeur Instructions eUAL UAL Compteur Ordinal eAdD Registre de contrôle S0S1 Mémoire eAdI Registre d’adresse RD/WR 56 Le décodage des instructions Le rôle de l’horloge : L’horloge est là pour cadencer le calculateur (séquenceur). Il s’agit d’un signal rectangulaire qui va servir de signal de synchronisation à toutes les unités du processeur. Chaque unité fournissant sa réponse après un temps qui lui est propre, la fréquence de l’horloge doit être choisit en fonction de la partie la plus lente. H Un cycle machine On parle de machine synchrone La fréquence de ce signal définit la vitesse de fonctionnement du processeur. Cette fréquence est en général plus élevée que la fréquence de l’horloge utilisée pour les circuits périphériques (performances, longueur des communications, …). Cette différence a une énorme importance au niveau des échanges avec la mémoire. 57 Le décodage des instructions Le décodeur d’instructions et séquenceur : Le séquenceur est une machine distribuant des signaux de commande aux diverses unités participant à l'exécution d'une instruction. Il peut être câblé ou microprogrammé. Le séquenceur microprogrammé est une mémoire dans laquelle on a mémorisé les séquences de mots de commande à exécuter à chaque période d’horloge. La séquence est activée par le décodeur (lui-même une mémoire). Registre d’Instruction Horloge ROM Code Op Décodeur Instructions ROM Séquenceur Adresse d’une Zone mémoire Micro-instruction 1 0 1 0 1 0 0 1 1 0 1 1 Micro-code Signaux de Commande (interrupteur) 58 Le décodage des instructions Exemple de fonctionnement : UNITE DE TRAITEMENT UNITE DE CONTROLE Bus Interne Registre de données Bus de Données Registre d’Instruction Accu A Accu B Décodeur Instructions Compteur Ordinal UAL Registre de contrôle Bus de Contrôle Registre d’adresse Bus d’Adresse 59 Le décodage des instructions Les micro-codes commandent les intérupteurs : eMem Bus Interne Registre de données eRI eAcc eBcc Registre d’Instruction Accu A Accu B eCO+1 Décodeur Instructions eUAL UAL Compteur Ordinal eAdD Registre de contrôle S0S1 Mémoire eAdI Registre d’adresse RD/WR 60 Le décodage des instructions Le rôle de l’horloge : eMem : mise en communication du registre donnée (mémoire) et du bus interne. eRI : mise en communication du Registre Instruction et du bus interne. eAdI : mise en communication du Registre Adresse et du CO (Adresse Instruction). eCO+1 : incrémentation du Compteur Ordinal. eAcc : mise en communication de A et du bus interne. eBcc : mise en communication de B et du bus interne. eAdD : Chargement de l’Adresse de la Donnée liée à l’instruction courante. eUAL : mise en communication du résultat de UAL et du bus interne. L’opération est spécifiée par les signaux S0S1 du bus de contrôle. S0S1 Opération 00 Addition 01 Soustraction 10 Multiplication 11 Division 61 Le décodage des instructions 1 : eCO+1; Exemple de fonctionnement : A+B→A 2 : S0S1=00, eUAL, eAcc; eMem Bus Interne Registre de données eRI eAcc eBcc 45h Add A,B Accu A Accu B Add A,B eCO+1 Mémoire Décodeur Instructions eUAL UAL 46h 45h eAdD Registre de contrôle S0S1 eAdI 45h RD/WR 62 Le décodage des instructions Chronogramme de A+B→A : H eCO+1 eUAL eAcc La durée de cette instruction est de 2 cycles machine 63 Les différents types d’adressage Un mode d’adressage définit la manière dont le processeur va accéder à l’opérande. Ces modes peuvent varier d’un processeur à l’autre, en général, on trouve : L’adressage immédiat : Le champ opérande de l’instruction contient la donnée (MOV A,#04). L’adressage direct : Le champ opérande de l’instruction contient l’adresse du mot mémoire contenant la donnée (MOV A,30h). L’adressage relatif : L’adresse effective est obtenue en additionnant le CO avec l’opérande. Ce type d’adressage est utilisé lors des instructions de branchement L’adressage indirect : Le champ opérande de l’instruction contient l’adresse d’un registre (pointeur) qui contient l’adresse du mot mémoire contenant la donnée (MOV 30h,@R1). 64 1 : eCO+1; 2 : eAdD; RD/WR=1; Le décodage des instr 6 : eMem, eAcc ; Exemple de fonctionnement : Chargement de A par adressage direct eMem 52h Bus Interne MOV A,30 0110 1111 eRI eAcc eBcc MOV A,30 Accu1111 A Accu B 0110 eCO+1 Mémoire 53h 52h Décodeur Instructions eUAL UAL eAdD Registre de contrôle S0S1 eAdI 30h 0110 1111 52h 30h 00h RD/WR 65 Le décodage des instructions Chronogramme de Chargement de A par adressage direct : 0 1 2 3 4 5 6 7 8 9 H eCO+1 eAdD eMem eAcc La vitesse de la RAM est plus lente que la vitesse du processeur d’ou une attente de 5 cycles (valeur arbitraire) de la réponse de la mémoire La durée de cette instruction est de 7 cycles machine 66 Le décodage des instructions Chargement de A par adressage indirect : @ La valeur à charger dans A est stockée dans une case mémoire dont l’adresse est stockée dans une autre case mémoire. MOV A,@52 Il faut aller chercher le contenu de ce mot mémoire : • Lire l’adresse contenue dans le mot mémoire à l’adresse 52h • Lire le mot dont l’adresse est dans 52h • Placer le contenu dans A 67 1 : eCO+1; 2 : eAdD; RD/WR=1; 6 : eMem, eRI, eAdD,RD/WR=1 10 : eMem, eAcc Le décodage des instr Exemple de fonctionnement : Chargement de A par adressage indirect eMem Bus Interne MOV A,@52 52h 0011 0000 0011 1111 0000 0110 eRI eAcc ABh eBcc MOV 0011A,@52 0000 Accu1111 A Accu B 0110 eCO+1 Mémoire Décodeur Instructions eUAL UAL ACh ABh eAdD Registre de contrôle S0S1 eAdI 30h 0110 1111 52h ABh 30h 00h RD/WR 68 Le décodage des instructions Chronogramme de Chargement de A par adressage indirect : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 H eCO+1 eAdD eMem eRI eAcc La durée de cette instruction est de 12 cycles machine 69 Le décodage des instructions Chargement de A par adressage indirect : @ La valeur à charger dans A est stockée dans une case mémoire dont l’adresse est stockée dans une autre case mémoire. MOV A,@52 Il faut aller chercher le contenu de ce mot mémoire : • Lire l’adresse contenue dans le mot mémoire à l’adresse 52h • Lire le mot dont l’adresse est dans 52h • Placer le contenu dans A Avantage : Comparer l’espace adressable avec un adressage direct et indirect, en sachant que l’on manipule des instructions d’un octet avec un code opération de 4 bits. • Direct : 24 • Indirect : 28 70 Le décodage des instructions Chargement de A par adressage indirect : @ Ce mode d’adressage est très long si l’on utilise la mémoire externe par contre si l’on utilise un registre interne cela devient plus rapide. MOV A,@R0 Ajout de registres à usage généraux dans l’unité de contrôle. 71 1 : eCO+1; 2 : eR0, eAdD; RD/WR=1; Le décodage des instr 6 : eMem, eAcc Utilisation de registres internes : plus rapide que la mémoire externe eMem Bus Interne eRI eAcc eBcc ABh MOV A,@R0 0110 1111 MOV A,@R0 Accu A Accu B 0110 1111 Décodeur Instructions eUAL eCO+1 Mémoire ACh ABh eR0 R0 30h UAL eAdD Registre de contrôle S0S1 eAdI 30h 0110 1111 30h ABh 00h RD/WR 72 Le décodage des instructions Chronogramme de Chargement de A par adressage indirect : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 H eCO+1 eAdD eR0 eMem eAcc La durée de cette instruction est de 7 cycles machine Les registres internes permettent d’augmenter la rapidité de l’ordinateur 73 Le décodage des instructions Chargement de A par adressage indirect : @ Ce mode d’adressage est très long si l’on utilise la mémoire externe par contre si l’on utilise un registre interne cela devient plus rapide. MOV A,@R0 Ajout de registres à usage généraux dans l’unité de contrôle. L’utilisation de l’adressage indirecte est moins rapide que l’adressage direct car il est nécessaire d’initialiser le registre utilisé. Par contre lorsque l’on doit manipuler des zones mémoires (tableaux, variables structurées,…) de longueurs variables, ce mode d’adressage est le seul utilisable (voir en TD). 74 Jeu d’instructions Les Branchements (sauts) : Ils introduisent des ruptures dans la séquence des instructions, de conditionnelle. CO +10 = CO Inconditionnel manière Acc = 0 Non inconditionnelle ou Oui CO +10 = CO CO +1 = CO Conditionnel 75 Jeu d’instructions Les Sous- Programmes (Appel à Fonction) : Programme Principal Modifié l Appe Fonction + Prog Principal plus court r Retour r tou e R Re tou Séquence d’Instructions identiques Ap Ap pel pe l Programme Principal Initial Ils ont pour but de diminuer le nombre d’instruction en écrivant des taches annexes ou répétitives en dehors du programme principal. - Gestion des appels 76 Jeu d’instructions Gestion des appels à fonction : Mémorisation de l’adresse de l’instruction suivante à exécuter (CO). Sauvegarde des registres modifiés lors de l’exécution de la fonction. Besoin d’une zone mémoire dédiée à ces sauvegardes LA PILE (Stack) Besoin d’un registre conservant l’adresse des données sauvegardées LE POINTEUR DE PILE (Stack Pointer) Les instructions utilisées : • Appel et retour : LCALL et RET • Sauvegarde et restauration d’une donnée ou adresse : PUSH et POP 77 Structure et fonctionnement d’une pile La pile est une mémoire ordonnée dans laquelle on ne peut accéder qu’au dernier élément sauvegardé. L’adresse de départ s’appelle l’adresse de base, le point d’accès : le sommet. L’adresse du sommet est mémorisée dans le pointeur de pile (PP) Après PUSH Q Après POP Acc Après POP R0 SOMMET 2010H 200FH 200EH P O N 2011H 2010H 200FH 200EH 2002H 2001H 2000H C B A 2002H 2001H 2000H SOMMET BASE PP 2010H Q P O N 2010H 200FH 200EH P O N SOMMET 200FH 200EH O N C B A 2002H 2001H 2000H C B A 2002H 2001H 2000H C B A PP 2011H SOMMET Q PP 2010H P 200FH PP 78 Jeu d’instructions L’instruction d’appel (LCALL) empile et modifie le Compteur Ordinal. Le Pointeur de Pile est incrémenté. Programme Principal Compteur Ordinal 0200h 021h 0020h 0021h LCALL 0200h Instruction suivante 0021h Pile 0200h 0220h RET 79 Jeu d’instructions L’instruction de retour (RET) restaure le Compteur Ordinal à partir de la pile. Le pointeur de pile est décrémenté. Programme Principal Compteur Ordinal 0221h 0021h 0020h 0021h LCALL 0200h Instruction suivante 0021h Pile 0200h 0220h RET 80 Hiérarchie des langages Majorité du code Langages Evolués : Python , C, C++ If then else, for, … Compilateur (Adapte le code source à une machine ) Langage Assembleur MOV, JUMP, LCALL,… Langage Machine 0110 0000, 1111 0011,… Micro-Code Signaux électriques Assembleur (Spécifique à un processeur) Tache spécifique liée au Hardware 81 Machine de HARVARD La machine de Von Neumann ne différencie pas la zone mémoire donnée et programme d’où un ralentissement mais la structure de la machine est simple. MEMOIRE ENTREES SORTIES PROCESSEUR Bus de contrôle Bus de données Bus d’Adresse Fetch, Decode, Execute, Save Chargement d’une instruction de la mémoire Analyse l'instruction et chargement de l’opérande en mémoire Sauvegarde mémoire en 82 Machine de HARVARD La machine de Harvard possède deux espaces mémoires qui communiquent avec le processeur avec des bus séparés. Un bus d’adresse de données et de contrôle pour les données. Un bus d’adresse de données et de contrôle pour les instructions. Il est possible de traiter une instruction et une donnée en même temps d’où gain de rapidité. La structure de la machine est plus compliquée. MEMOIRE PROGRAMME Bus de contrôle Bus de données Bus d’Adresse Pour les Instructions MEMOIRE DONNEES PROCESSEUR Bus de contrôle Bus de données Bus d’Adresse Pour les Données 83 Les différents type d’ordinateur Les Micro-processeurs : Ordinateur sans mémoire interne donc qui ne peut pas fonctionner seul (PC). Les Micro-contrôleurs : Ordinateur possédant de la mémoire interne, il peut fonctionner seul. Ces micro-contrôleurs ont pour rôle la gestion de système car il possède tout un arsenal de moyen de communication (Télécommande, Feux de circulation, Appareils électroménagés,…) Les DSP (Digital Signal Processing) : Ordinateur dédié au traitement du signal (calcul en temps réel). C’est ce type d’ordinateur qui traite le son (Téléphone Portable) ou l’image (Console de Jeux). 84