8. bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...carte de la mémoire...

25
Bus et adressage GIF-1001: Ordinateurs: Structure et Applications Jean-François Lalonde, Hiver 2019

Upload: others

Post on 25-Feb-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

Bus et adressage

GIF-1001: Ordinateurs: Structure et Applications Jean-François Lalonde, Hiver 2019

Page 2: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

Aujourd’hui

• Mécanismes de fonctionnement:

• bus et mémoires

• adressage

2

Page 3: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

Rappel: CPU, mémoire, bus

• Questions de rappel: • Comment lire des données stockées en mémoire RAM? • Comment écrire des données en mémoire RAM? • Combien d’adresses la mémoire a-t-elle? • Quelle est la taille des mots dans la RAM?

3

RAMAdresse

L DonnéesE

CPU

Bus d’adresses (8 bits)

Bus de données (8 bits)

Bus de contrôle (L/E)

Page 4: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

Lecture vs écriture

4

Mettez-vous dans la peau du microprocesseur!

microprocesseur (vous) mémoire

Bite my shiny metal…

écriture

lecture

Page 5: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

Carte de la mémoire (memory map)

5

RAM

0x00

0xFF

Page 6: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

Carte de la mémoire (memory map)

6

RAM

0x00

0xFF

La carte de la mémoire (memory map en anglais)

indique l’adresse de début et de fin de toutes les composantes placées

sur les bus.

Dans cet exemple, il n’y a qu’une composante (la RAM), alors elle

occupe toute la plage d’adresses du micro-processeur.

Page 7: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

Bus: adressage

RAMAdresse

L DonnéesE

CPU ROMAdresse

L Données

Bus d’adresses (8 bits)

Bus de données (8 bits)

• Questions: • Comment faire pour sélectionner la bonne mémoire?

7

Bus de contrôle (L/E)

Page 8: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

Bus: décodeur d’adresses

RAMEN Adresse

L DonnéesE

Décodeur d’adresses

CPU ROMEN Adresse

L Données

Bus d’adresses (8 bits)

Bus de données (8 bits)

• Solution: « emprunter » un bit (b7) et un décodeur d’adresses

8

Bus de contrôle (L/E)

b7

s1s0e0

Page 9: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

Bus: décodeur d’adresses

• Le décodeur d’adresses est un circuit logique qui sélectionne une sortie en fonction des entrées.

• Par exemple, le décodeur ci-haut possède une entrée « e0 » et deux sorties « s0 » et « s1 ». La valeur des sorties est calculée comme suit:

• Si e0 = 0 alors s0 = 1, s1 = 0

• Si e0 = 1 alors s0 = 0, s1 = 1

• Ce genre de circuit est aussi connu sous le nom de démultiplexeur (demux)

9

Décodeur d’adresses s1

s0e0

Page 10: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

Bus: décodeur d’adresses

RAMEN Adresse

L DonnéesE

Décodeur d’adresses

CPU ROMEN Adresse

L Données

Bus d’adresses (8 bits)

Bus de données (8 bits)

• Questions: • Quelle est la taille maximale de RAM et ROM (en octets)? • Aux yeux du CPU, quelle est l’adresse du premier emplacement mémoire en

RAM? en ROM? • Quelle est la carte de la mémoire (memory map) de ce système?

10

Bus de contrôle (L/E)

b7

s1s0e0

Page 11: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

ROM

Carte de la mémoire (memory map)

11

RAM

0x00

0xFF

0x7F0x80

Page 12: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

ROM

Carte de la mémoire (memory map)

12

RAM

0x00

0xFF

0x7F0x80

Nous avons maintenant deux composantes sur les bus

(RAM et ROM).

La plage d’adresses du micro-processeur (0x00 à 0xFF) est donc divisée en deux: la première moitié (de 0x00 à 0x7F) pour la RAM, et la seconde (de 0x80 à 0xFF) pour la

ROM.

Page 13: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

ROM

Carte de la mémoire (memory map)

13

RAM

0x00

0xFF

0x7F0x80

Nous avons maintenant deux composantes sur les bus

(RAM et ROM).

La plage d’adresses du micro-processeur (0x00 à 0xFF) est donc divisée en deux: la première moitié (de 0x00 à 0x7F) pour la RAM, et la seconde (de 0x80 à 0xFF) pour la

ROM.

0 0 0 0 0 0 0 0

0 1 1 1 1 1 1 1

1 0 0 0 0 0 0 0

1 1 1 1 1 1 1 1

Adresse (en binaire)

Page 14: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

ROM

Carte de la mémoire (memory map)

14

RAM

0x00

0xFF

0x7F0x80

Nous avons maintenant deux composantes sur les bus

(RAM et ROM).

La plage d’adresses du micro-processeur (0x00 à 0xFF) est donc divisée en deux: la première moitié (de 0x00 à 0x7F) pour la RAM, et la seconde (de 0x80 à 0xFF) pour la

ROM.

0 0 0 0 0 0 0 0

0 1 1 1 1 1 1 1

1 0 0 0 0 0 0 0

1 1 1 1 1 1 1 1

Adresse (en binaire)

Le bit b7 est utilisé par le décodeur d’adresse pour déterminer quelle

composante sera activée!

Page 15: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

Activation (enable)• Un bus relie le CPU à plusieurs composantes

• Plusieurs composantes sont donc branchées sur le même circuit.

• Question: comment faire pour qu’une seule composante puisse accéder au bus à la fois?

• Réponse:

• chaque bloc mémoire possède un signal d’activation (enable) qui indique si elle est sélectionnée pour lecture ou écriture sur le bus de données

• sinon, la composante ne communique pas avec le bus de données (elle est en « haute impédance »)

15Pour votre information seulement… pas besoin de bien

comprendre le concept de « haute impédance » dans le cours.

Page 16: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

Bus: adressage• Un bus relie le CPU à plusieurs composantes

• Question: comment déterminer quelle composante devrait être activée?

• Réponse:

• c'est le décodeur d’adresse qui détermine quelle composante est activée (avec le enable) selon l’adresse spécifiée sur le bus d’adresse

• les autres composantes ne communiquent pas avec le bus de données (sont en « haute impédance »)

16

Page 17: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

Bus: plusieurs périphériques

RAMEN Adresse

L DonnéesE

Décodeur d’adresses

CPU ROMEN Adresse

L Données

• Question: • Comment faire pour supporter plus que deux

mémoires?

17

b7

s1s0e0

ClavierÉcranE Données L

EN Adresse EN Adresse

? ?

Page 18: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

Bus: plusieurs périphériques

RAMEN Adresse

L DonnéesE

Décodeur d’adresses

CPU ROMEN Adresse

L Données

• Question: • une entrée, quatre sorties?

18

b7

s1s0e0

ClavierÉcranE Données L

EN Adresse EN Adresse

s2s3

Page 19: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

Bus: plusieurs périphériques

RAMEN Adresse

L DonnéesE

Décodeur d’adresses

CPU ROMEN Adresse

L Données

• Question: • quelle est la carte de la mémoire (memory map) de ce

système?

19

b6

s1s0e0

ClavierÉcranE Données L

EN Adresse EN Adresse

s2s3

e1

b7

Page 20: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

Écran

ROM

Clavier

RAM

Carte de la mémoire (memory map)

20

0x00

0xFF

0x7F0x80

0x400x3F

0xBF0xC0

Page 21: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

Écran

ROM

Clavier

RAM

Carte de la mémoire (memory map)

21

0x00

0xFF

0x7F0x80

0x400x3F

0xBF0xC0

0 0 0 0 0 0 0 0

0 1 1 1 1 1 1 1

1 0 0 0 0 0 0 0

1 1 1 1 1 1 1 1

Adresse (en binaire)

0 0 1 1 1 1 1 10 1 0 0 0 0 0 0

1 0 1 1 1 1 1 11 1 0 0 0 0 0 0

Page 22: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

Écran

ROM

Clavier

RAM

Carte de la mémoire (memory map)

22

0x00

0xFF

0x7F0x80

0x400x3F

0xBF0xC0

0 0 0 0 0 0 0 0

0 1 1 1 1 1 1 1

1 0 0 0 0 0 0 0

1 1 1 1 1 1 1 1

Adresse (en binaire)

0 0 1 1 1 1 1 10 1 0 0 0 0 0 0

1 0 1 1 1 1 1 11 1 0 0 0 0 0 0

Cette fois, les bits b7 et b6 sont utilisés par le décodeur d’adresse

pour déterminer quelle composante sera activée!

Page 23: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

Entrées-sorties (périphériques)• Les I/Os (Input-Output, entrées-sorties) servent

d’interface avec l’usager, les périphériques et d’autres ordinateurs.

• Des lignes de contrôle existent pour gérer certains I/Os spécifiques.

• Les I/Os ne sont pas que passifs

• Ils peuvent générer des interruptions pour signaler des évènements au microprocesseur (exemple: touche de clavier enfoncée)

23

Page 24: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

Entrées-sorties: adressage• Deux façons principales pour déterminer les adresses des I/Os

• Memory-Mapped I/O (MMIO)

• les I/Os sont gérés exactement comme la mémoire: pour accéder à un I/O, on lit ou écrit une adresse du système

• nous explorerons cette organisation dans le TP1

• Port-Mapped I/O (PMIO)

• les I/Os ont leurs propres adresses, séparées des adresses systèmes

• on emploie des instructions spécifiques aux I/Os pour y accéder

• ex: x86

24

Page 25: 8. Bus et adressagevision.gel.ulaval.ca/~jflalonde/cours/1001/h19/cours/8...Carte de la mémoire (memory map)6 RAM 0x00 0xFF La carte de la mémoire (memory map en anglais) indique

Démonstration: TP1

25