Mémoires, périphériques et interruptions

publicité
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
Téléchargement