Au menu Mémoires Mémoire cache Périphériques Architecture des ordinateurs Jérémy Fix CentraleSupélec [email protected] 2015-2016 Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Cours • les mémoires et la mémoire cache • les périphériques : quoi ? canal d’échange, protocole d’échange, prise en compte par interruption TP • BE : Interruptions : écoute passive des périphériques • TL : ordonnanceur : exécuter plusieurs programmes en parallèle avec un chemin de données Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques La mémoire Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Caractéristique des mémoires Caractéristiques • Mode d’accès : aléatoire (RAM), séquentiel (disque dur), associatif (cache) • Capacité d’écriture : ROM (en lecture seule), ROM (en lecture et écriture) • volatilité : maintien des informations en l’absence de courant ? (ROM : forcément non volatile, RAM : ça dépend; SDRAM : volatile ; NVRAM : non volatile ou RAM + pile : CMOS) Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Les mémoires mortes Non volatiles, en lecture seule (≈) • ROM : Read Only Memory (programmée à la fabrication) • PROM : Programmable Read Only Memory (fusibles; programmable une fois) • EPROM : Erasable Programmable Read Only Memory (Ultraviolet) • EEPROM : Electrically Programmable Read Only Memory (e.g. pour contenir le BIOS : Basic Input Output System; les paramètres sont mémorisés avec une RAM volatile + batterie) Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Les mémoires en lecture/écriture Volatiles, accès aléatoire • Registres : bascules D maı̂tre/esclave • Static RAM (SRAM) • Dynamic RAM (DRAM) Non-Volatiles • accès séquentiel : Disques durs magnétiques • accès aléatoire : disques durs SSD, mémoire flash, nvSRAM, .. Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Les mémoires vives Registres Registre n bits Registre n bits n n D Q n D D Q Q D E Q Verrou 1: maı̂tre Q n D Q Clear D Q Verrou 2 : esclave D Q D Q Q E Q E Q Q clk Q Capacité : ≈ 32-64 bits Temps d’accès : ≈ 1 ps (10−12 s) Volatile Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Les mémoires vives Static Random Access Memory (SRAM) word line Q Q bitline bitline amplificateur Capacité : 10 Ko - 10 Mo Temps d’accès : ≈ 1ns Volatile Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Les mémoires vives Dynamic random access memory (DRAM) word line Vc C bitline Capacité : 10 Go Temps d’accès : 80 ns (réécriture toutes les ms) Volatile Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Les mémoires de masse Disque dur magnétique 1 0 1 0 Têtes de lecture 1 1 Capacité : 1 To Temps d’accès : 10 ms Non volatile Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Synthèse des mémoires vives et de masse Compromis ? Type Registre SRAM DRAM Flash Disque dur Magn Capacité 100 bits 10 Ko - 10 Mo 10 Go 100 Go 1 To Latence 20 ps 1-10 ns 80 ns 100 µs 10 ms Coût (au Gi-octet) très cher ≈ 1000 e ≈ 10 e ≈1e ≈ 0.1 e Une mémoire rapide et de grosse capacité ?? Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Principe de localité La clé Les principes de localité Adresse mémoire Localité temporelle Données Pile Localité spatiale Programme Temps • localité spatiale : les accès futures en RAM se feront à des addresses proches des accès courants • localité temporelle : une donnée accédée récemment sera certainement réutilisée prochainement Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Principe de localité Comment exploiter les principes de localité ? On combine : 1 une petite mémoire rapide avec 2 une grosse mémoire lente Localité temporelle : on charge en mémoire rapide une donnée à laquelle on accède Localité spatiale : on charge aussi les voisines Politique de remplacement ? Dépends de la réalisation... Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Principe de localité Comment exploiter les principes de localité ? Solution 1) A la charge du programmeur Cache (L1, L2, ..) SRAM 10 ns Processeur Mémoire principale 80 ns DRAM → Pas très pratique... Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Principe de localité Comment exploiter les principes de localité ? Solution 2) Hierarchie de mémoires Processeur Cache (L1, L2, ..) SRAM 10 ns Mémoire principale DRAM 80 ns Performances du cache • Cache hit : la donnée est dans le cache ⇒ accès rapide • Cache miss : la donnée n’est pas dans le cache ⇒ accès lent hits Hit ratio : hits+misses misses Miss Ratio : hits+misses Temps moyen d’accès mémoire Tm ≈ HR.tcache + MR.tmem Pour HR = 90% : Tm = 17ns. Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Réalisation matérielle Principe de fonctionnement d’un cache Principe A partir d’une petite information (clé), on retrouve le reste (valeur). Analogie : annuaire téléphone En pratique L’adresse demandée est divisée en plusieurs parties dont une sert de clé. Tableau associatif : Cache[clé] = {adr, valeur, ...} Si la donnée est présente en cache : valide et accès rapide Sinon il faut récupérer la donnée et la placer dans le cache. Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Réalisation matérielle Réalisations matérielles d’un cache Cache à correspondance directe Adresse mémoire sur 16 bits Adresse demandée 001 E Index (4 bits) 0 1 2 ··· E F Valid 0 1 1 ··· 1 0 Tag Index }| { z }| { 00 · · · 00 0000 z Data 0x0001 0x0010 0x1001 ··· 0x7400 0x0010 Tag (12 bits) 0x010 0x004 0x4C0 ··· 0x001 0xFFF =? lignes de cache Hit RAM[Adr] → Cache[Adr3 Adr2 Adr1 Adr0 ] pourquoi les bits de poids faibles comme index ? Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Réalisation matérielle Réalisations matérielles d’un cache Cache à correspondance directe par bloc Adresse mémoire sur 16 bits Adresse demandée 001 E Index : 11 Index (2 bits) 0 1 2 3 Valid 0 1 1 1 Tag Index Offset }| { z}|{ z}|{ 00 · · · 00 00 00 z Tag (12 bits) 0x010 0x004 0x4C0 0x001 Data 0x0001 0x0001 0x0001 0x0001 0x0001 0x0001 0x0001 0x0001 lignes de cache 0x0001 0x0001 0x0001 0x0001 0x0001 0x0002 0x0003 0x0004 Offset : 10 0x0003 =? Hit Un bloc : 2|offset| mots; Toutes les adresses de même “Index” ciblent la même ligne. Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Réalisation matérielle Réalisations matérielles d’un cache Cache associatif Adresse demandée Adresse mémoire sur 16 bits Tag Valid =? 0x034 0 =? 0xF01 1 =? 1 0x4C0 Hit =? 1 0x001 Tag Offset }| { z }| { 00 · · · 00 0000 z Data (16 mots) 0x0001 0x0001 0x0001 0x0001 0x0001 0x0001 0x0001 0x0002 ··· 0x0001 0x0001 ··· 0x0001 0x0001 ··· 0x0001 0x0001 ··· 0x0003 0x0004 001 E Offset : 0xE 0x0003 Une donnée peut occuper n’importe quelle ligne de cache. Lourd matériellement. Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Réalisation matérielle Réalisations matérielles d’un cache Cache associatif à n entrées Adresse mémoire sur 16 bits Adresse demandée 001 E Index (4 bits) 0 1 2 ··· E F Valid 1 1 1 ··· 1 0 Tag Index }| { z }| { 00 · · · 00 0000 z Tag (12 bits) 0x010 0x014 0x4C0 ··· 0x001 0xFFF =? Data 0x0001 0x0210 0x2101 ··· 0xF900 0x0001 hit Valid 0 1 0 ··· 0 0 Tag (12 bits) 0x119 0x008 0x4D0 ··· 0x005 0xFE9 =? Valid Data 0x0001 1 0x0010 1 0x1001 1 ··· ··· 1 0x19CB 0x0010 0 Tag (12 bits) 0xF93 0x004 0xD61 ··· 0x291 0x01F Data 0x0001 0xF010 0x1001 ··· 0x7400 0x0020 =? Indexable comme les caches directs, cache[index] étant associatif Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Cohérence mémoire Cohérence cache/mémoire centrale Processeur Cache (L1, L2, ..) SRAM 10 ns Mémoire principale DRAM 80 ns Problème Une donnée d’une même adresse peut être à la fois en cache et en mémoire centrale. Politiques d’écriture • Write through : propagation immédiate d’une modification vers la mémoire principale • Write back : écriture différée; écriture au remplacement (dirty bit) Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Les périphériques d’entrée/sortie Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Aperçu Les périphériques 2 8 3 4 10 5 9 12 6 11 15 14 7 1 http://www.wikipedia.org Architecture 16 13 Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Aperçu Structure d’un périphérique Au périphérique est associé un contrôleur (e.g. contrôleur disque) qui possède : • des registres • des mémoires • des machines à état • ... Le périphérique est couplé aux bus d’adresses, données, contrôle. Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Bus Interconnexion des périphériques et du chemin de données P1 CPU P2 P3 P1 P3 Bus CPU P2 Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Bus Interconnexion des périphériques et du chemin de données Microprocesseur 00 020000e0 00800008 00000000 00000000 04 00000000 00000000 00000000 00000000 08 00000c00 01401900 00000000 00000000 +1 0c 0080000c 00000000 00000000 00000000 MicroPC Écran Clavier RAM @Adr 00 01Mux 10 11 ··· Bus contrôle MuxSel Bus données ··· ··· ··· D ··· 00000000 00000000 00000000 Adr D010800000 D408800000 00000000 00000000 00000000 ··· ··· ··· ··· ··· 00 32 E0 Microcode INT E4 E8 Microcode RTI EC CodeMCount 31 30 29 ReadINTAdr 28 SetIF 27 ClearIF 26 INTA 25 24 23 CodeMCount 22 21 UAL 20 19 18 ReadSP SetSP 17 16 ReadB SetB 15 14 SetA 13 ReadA 12 SetPC 11 SetRADM ReadPC 10 9 SetMem 8 ReadMem 7 6 5 4 @Adr 3 2 1 0 INTRIF Bus B Bus A ReadMem ReadINTAdr RADM Bus adresses 0x0000 INTAdr 0x0002 ReadA A B ReadB PC ReadPC SP 0x0000 0x0000 0x0000 0x0000 SetA SetB SetPC SetSP ReadSP A SetIF D Q SetRADM B IF clk Enable SetMem UAL S Z C V SetIFClearIF Bus S Bus externes Bus internes Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Bus Interconnexion des périphériques et du chemin de données Carte graphique RAM PCI express AGP Processeur Bus système (frontside) Northbridge bus PCI Southbridge bus ISA Mémoire cache Disque dur SCSI Carte réseau Ports USB Disque dur IDE Les bus Bus ISA 16 PCI 32 AGP PCI-E 3 (x16) Largeur (bits) 16 32 32 16 Clk (MHz) 8.33 33 66 8000 Débit (Mo/s) 15.9 125 250 16000 Année 1984 1993 1997 2011 Bus parallèles (échange de mots, large mais court) / Bus série (bit à bit, e.g. USB) Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Bus Comment contacter les entrées/sorties ? Il faut pouvoir contacter les registres du contrôleur du périphérique. E/S mappées en mémoire • comme pour un accès mémoire LDA, STA • avec des adresses réservées, ciblant les périphériques Autre solution : pas de bus d’adresse; placer dans le message un identifiant du destinataire. Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Comment discuter sur le bus ? Protocoles d’échange : e.g. lecture mémoire Echange synchrone Horloge Adresses invalide valide Read Données invalide valide Fréquence d’horloge : ajustée au périphérique le plus lent Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Comment discuter sur le bus ? Protocoles d’échange : e.g. lecture mémoire Echange asynchrone : Master/Slave Adresses invalide valide Read MSyn requête de lecture données récupérées données placées module déconnecté Ssyn Données invalide valide Pas d’horloge mais des signaux d’état : handshaking Plus réactif mais plus compliqué à mettre en oeuvre. Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Comment discuter sur le bus ? Protocoles d’échange : e.g. lecture mémoire Echange demi-synchrone Attente du processeur Horloge Adresses invalide valide Read Wait Données invalide valide Attente ? e.g. Wait State : attente active Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Comment discuter sur le bus ? Et si on est plusieurs à vouloir parler ? On sait : • comment interconnecter un périphérique avec le chemin de données : bus • comment réaliser un transfert synchrone/asynchrone mais on a : • “un” bus • plusieurs acteurs : mémoires, périphériques, CPU, ... Nécessité d’arbitrer, e.g. le premier dans un certain ordre. Et comment la demande d’échange du périphérique est prise en charge ? Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Comment discuter sur le bus ? Gestion des périphériques par interruption Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Comment discuter sur le bus ? Evènements synchrones Déroutements (trap, exception): événements synchrones avec l’exécution d’un programme, liés à une erreur : division par zéro, overflow, accès invalide à la mémoire : e.g. stack overflow Ex : Overflow Comment prendre en charge des débordements lors d’opérations arithmétiques ? 1 le programme teste, après “chaque” opération, le bit overflow (Status register) • programme plus long en mémoire et à l’exécution et plus compliqué à écrire 2 dérouter le fil d’exécution si un débordement a lieu (à la JZA); pas de surcoût ! Au regard d’un programme, on peut prévoir quand un déroutement Jérémy Fix Architecture Au menu Mémoires Mémoire cache Périphériques Interruptions Evènements asynchrones Evènements asynchrones; e.g. appui sur un bouton, une touche de clavier, bourrage papier, lecture mémoire terminée, ... Prise en charge par scrutation On interroge régulièrement le périphérique • programmation explicite • surcoût à l’exécution Prise en charge par interruption Ecoute passive du périphérique : exécute un programme particulier que lorsque le périphérique lève une demande d’interruption → sollicite moins le processeur (e.g. lecture sur disque : données prêtes) Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Interruptions Modification du chemin de données On ajoute une ligne de requête d’interruption (INTR) qu’un périphérique peut mettre à l’état haut. Registre IF pour y être sensible ou non. 00 020000e0 00800008 00000000 00000000 04 00000000 00000000 00000000 00000000 08 00000c00 01401900 00000000 00000000 +1 0c 0080000c 00000000 00000000 00000000 MicroPC ··· ··· ··· ··· D ··· 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 00 @Adr 01 [8:15] Mux 10 00 Adr D0 10800000 00000000 00000000 00000000 D4 08800000 00000000 00000000 00000000 ··· ··· ··· ··· ··· [0:7] 11 MuxSel E0 E4 E8 EC CodeMCount 32 Microcode INT Microcode RTI SetT ReadT ReadINTAdr SetIF ClearIF INTA CodeMCount UAL SetSP ReadSP SetB ReadB SetA ReadA SetPC ReadPC SetRADM SetMem ReadMem @Adr INTR IF Bus B Bus A ReadMem 0x1000 0x0010 0x2000 0x0001 0x3000 0x1c00 0x000A 0x0000 Do ReadINTAdr RADM Adr 0x0000 0x0000 0x0000 0x0000 0x0000 ReadT ReadA ReadB ReadPC INTAdr Temp A B PC SP 0x0002 0x0000 0x0000 0x0000 0x0000 0x0000 SetT SetA SetB SetPC SetSP Di ReadSP SetIF A D Q Enable SetMem SetRADM B IF clk Z C UAL S V SetIF ClearIF Bus S Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Interruptions Ecoute passive des demandes d’interruption Avant le fetch/decode, on test si une demande d’interruption est levée : • sinon, on entre dans la phase de fetch/decode et exécution de l’instruction • si oui, on CodeMCount 000 001 010 011 011 100 100 Architecture part en interruption Z 0 1 - INTR & IF 0 1 S1 S0 00 01 10 00 01 01 00 Sémantique MicroPC := MicroPC := MicroPC := MicroPC := MicroPC := MicroPC := MicroPC := MicroPC+1 @Adr Instruction MicroPC+1 si S 6= 0 @Adr si S = 0 @Adr si INTR&IF MicroPC+1 si INTR&IF Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Interruptions Prise en charge de la demande d’interruption Principe L’interruption doit être gérée de manière transparente pour le programme interrompu ⇒ sauvegarde du contexte d’exécution (sur la pile) Nouvelles instructions • INT (0xE000) : partir en interruption : 1 sauvegarde du contexte d’exécution sur la pile 2 chargement de l’adresse du programme d’interruption • RTI (0xE800): revenir d’une interruption : 1 restauration du contexte d’exécution du programme interrompu • STI (0xD400) : démasque les interruptions : IF := 1 • CLI (0xD000) : Masque les interruptions : IF := 0 Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Interruptions Comment savoir quel programme exécuter en cas d’interruptions Vecteur d’interruption : programme à exécuter en cas d’interruption On stocke une table des vecteurs d’interruption en début de mémoire : JMP init JMP introutine init: ... ; le programme principal ... introutine: ... ; la routine d’interruption ... RTI ; le retour d’interruption Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Interruptions Chez nous : une seule interruption Nous ne prendrons ici en charge qu’une interruption, l’adresse de la routine d’interruption est codée en dur, dans le registre INTAdr Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Interruptions Résumons 1 le périphérique lève une requête d’interruption INTR=1 2 le processeur détecte la requête 3 le processeur accuse réception 4 le processeur sauvegarde l’état courant et se branche sur la routine d’interruption (vecteur d’interruption ou interrupt handler) 5 le processeur restaure l’état Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Interruptions L’initialisation Attention La gestion de l’interruption implique la pile !! ⇒ Phase d’initialisation (JMP init) minimale : 1 par défaut IF = 0 2 LDSPI ... 3 STI Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Interruptions Exemple jouet : En BE V+ Bouton D Q INTR 00 02000008 008000e0 00000000 00000000 04 00000000 00000000 00000000 00000000 clear 08 00000c00 01401900 00000000 00000000 +1 0c 0080000c 00000000 00000000 00000000 INTA MicroPC ··· ··· ··· ··· 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 D ··· 00 @Adr 01 Mux [8:15] 10 [0:7] 11 Adr 00 D0 10800000 00000000 00000000 00000000 D4 08800000 00000000 00000000 00000000 ··· E0 RAM ··· ··· ··· 32 ··· Microcode INT E4 E8 CodeMCount MuxSel Microcode RTI EC SetT ReadT ReadINTAdr SetIF ClearIF INTA CodeMCount UAL SetSP ReadSP SetB ReadB SetA ReadA SetPC ReadPC SetRADM SetMem ReadMem @Adr Coupleur 0x1000 INTR IF <0x1000 SetMem ReadMem Bus B Bus A ReadMem ADR D ReadINTAdr RADM INTAdr ReadT Temp ReadA A ReadB ReadPC B PC SP 0x0000 0x0000 0x0000 ReadSP A SetIF 0x0000 0x0002 0x0000 0x0000 D B IF Z Q C clk UAL Coupleur V Enable 0x1001 SetMem SetRADM SetT SetA SetB SetPC S SetSP SetIF ClearIF Bus S Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Interruptions Plusieurs interruptions ? On s’est limité pour le moment à un seul périphérique. Prise en charge de plusieurs interruptions 1 Plusieurs lignes d’interruptions 2 Centralisation et arbitrage des demandes d’interruptions; Le vecteur d’interruption est récupéré sur le bus de données Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Interruptions Petits pas vers l’OS : Ordonnanceur Problème Comment exécuter plusieurs programmes “en même temps” : 1 avec plusieurs chemins de données (architectures multi-coeurs) 2 avec un seul chemin de données partagé par deux programmes : en TL Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Interruptions Initialisation Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Interruptions Basculement de contexte Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Interruptions Rétrospective et conclusion Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Interruptions Cours 1 : Codons tout en binaire Codage/décodage Codage valeur représentation 1038 -123 Maitre corbeau sur son .. Architecture Décodage 00100 Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Interruptions Cours 2-3 : Transistors, Circuits logiques, séquenceur Couche physique Vcc p-MOSFET Vin Vout n-MOSFET GND ⇒ Electronique analogique (ELAN), physique des semi-conducteurs Couche logique A B 16 a1 X0 Y0 X1 Y1 s0 DEC s1 s2 s3 MUX Y X DEMUX X2 Y2 16 U0 N U1 U2 Z UAL U3 a0 X3 C Adr k ROM n Do Capacitée : n ∗ 2k bits V Y3 s1 s0 16 s1 s0 S ⇒ Systèmes logiques et électronique associée (SLEA) Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Interruptions Cours 4-5 : pile et programmation Pile et procédures Qui met quoi dans la pile ? Qui enlève quoi dans la pile ? Adresses Programme appelé CALL Programme appelant Variables locales Adresse de retour (PC) Arguments de la routine Place pour le résultat Sauvegarde éventuelle des registres Adresses Programme appelé RET Programme appelant Variables locales Adresse de retour (PC) Arguments de la routine Place pour le résultat Sauvegarde éventuelle des registres Programmation ⇒ Fondement de l’informatique et structures de données (FISDA) Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Interruptions Cours 6 : mémoires caches Hierarchie de mémoire Adresse mémoire Localité temporelle Données Pile Localité spatiale Programme Temps Processeur Architecture Cache (L1, L2, ..) SRAM 10 ns Mémoire principale DRAM 80 ns Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Interruptions Cours 7 : périphériques et interruptions Microprocesseur 00 020000e0 00800008 00000000 00000000 04 00000000 00000000 00000000 00000000 08 00000c00 01401900 00000000 00000000 +1 0c 0080000c 00000000 00000000 00000000 MicroPC Écran Clavier RAM @Adr 00 01Mux 10 11 ··· Bus contrôle MuxSel Bus données ··· ··· ··· D ··· 00000000 00000000 00000000 Adr D010800000 D408800000 00000000 00000000 00000000 ··· ··· ··· ··· ··· 00 32 E0 Microcode INT E4 E8 Microcode RTI EC CodeMCount 31 30 29 ReadINTAdr 28 SetIF 27 ClearIF 26 INTA 25 24 23 CodeMCount 22 21 UAL 20 19 18 ReadSP SetSP 17 16 ReadB SetB 15 14 SetA 13 ReadA 12 SetPC 11 SetRADM ReadPC 10 9 SetMem 8 ReadMem 7 6 5 4 @Adr 3 2 1 0 INTRIF Bus B Bus A ReadMem ReadINTAdr RADM Bus adresses 0x0000 INTAdr 0x0002 ReadA A B ReadB PC ReadPC SP 0x0000 0x0000 0x0000 0x0000 SetA SetB SetPC SetSP ReadSP A SetIF D Q SetRADM B IF clk Enable SetMem UAL S Z C V SetIFClearIF Bus S Bus externes Bus internes Architecture Jérémy Fix Au menu Mémoires Mémoire cache Périphériques Interruptions Cours xx ⇒ Systèmes d’informations (SI) 1 Systèmes d’exploitation : • • • • • 2 Architecture couche d’abstraction supplémentaire systèmes de fichiers mémoire virtuelle ordonnanceur ... ...... Jérémy Fix