Memory Organization in Computer Architecture
Exercice 1 - Noms des acronymes Voici la signification des acronymes utilisés dans l'étude de l'organisation de la mémoire.
D'après le document Memory Organization in Computer Architecture
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source
Programming, Computer Architecture, Memory Management · PDF · 5 pages · 2019
Afficher l'aperçu du document
Exercice 1 - Noms des acronymes
Voici la signification des acronymes utilisés dans l'étude de l'organisation de la mémoire.
- EAD : Espace d'Adressage Direct
- NCM : Nombre de Cases Mémoires
- TMC : Taille de la Mémoire Centrale
- T@M : Taille d'adresse mémoire
- @bM : Adresse basse mémoire
- NB : Nombre de Blocs
- NCB : Nombre de Cases par Bloc
- T@B : Taille d'adresse Bloc
- @bB : Adresse basse du Bloc
- Tbus@ : Taille du bus d'adresse
- Dec@ : Décodeur d'adresse
- TCM : Taille d'une Case Mémoire
- Capacité d'adressage : Quantité maximale de mémoire adressable par le processeur
- @hM : Adresse haute mémoire
- TB : Taille de Bloc
- Nb@M : Nombre de bits d'adresse mémoire
- NL@M : Nombre de Lignes d'adresse mémoire
- @hB : Adresse haute du Bloc
- Nb@B : Nombre de bits d'adresse Bloc
- NL@B : Nombre de Lignes d'adresse Bloc
- TbusD : Taille du bus de données
- DecB : Décodeur de Blocs
Exercice 2 - Dimensionnement de la mémoire centrale
Note de lecture : Le symbole illisible "" présent dans le document original désigne des octets (o). La source contient une notation confuse au départ (EAD = 128 Mo = 2^30 bits) mais l'utilise dans les calculs suivants comme signifiant que le nombre de cases mémoires adressables (NCM) est de 2^30. Nous suivons cette logique pour que les résultats mathématiques soient exacts et cohérents avec la correction d'origine.
Données de base :
- TCM (Taille d'une Case Mémoire) = 16 bits = 2 octets = 2^4 bits.
- NCM (Nombre de cases) = 2^30 cases (déduit des 30 bits d'adresse, bien que le sujet mentionne 128M octets = 2^30 bits d'Espace d'Adressage Direct).
- Rappels : 1 octet = 2^3 bits ; 1 K = 2^10 ; 1 M = 2^20 ; 1 G = 2^30.
Question 1 - Nombre de bits d'adresse et de données
a- Nombre de bits d'adresse : Puisque le système adresse 2^30 cases mémoires, il faut 30 bits pour identifier chaque case de façon unique.
- Nombre de bits d'adresse = 30 bits
b- Nombre de bits de données : La taille du bus de données correspond à la taille d'une case mémoire (TCM), qui est de 16 bits.
- Nombre de bits de données = 16 bits
Question 2 - Capacité de la mémoire centrale (TMC)
La taille de la mémoire centrale est égale au nombre de cases multiplié par la taille d'une case : TMC = NCM × TCM.
a. TMC en bits :
- 2^30 cases × 2^4 bits = 2^34 bits
b. TMC en octets :
- 2^34 bits ÷ 2^3 = 2^31 octets
c. TMC en Ko (Kilo-octets) :
- 2^34 bits ÷ (2^10 × 2^3) = 2^21 Ko
d. TMC en Mo (Méga-octets) :
- 2^34 bits ÷ (2^20 × 2^3) = 2^11 Mo (Note : La correction d'origine affiche par erreur l'unité "K" pour ce résultat, mais le diviseur 2^20 utilisé prouve bien qu'il s'agit de Méga-octets).
e. TMC en Go (Giga-octets) :
- 2^34 bits ÷ (2^30 × 2^3) = 2^1 = 2 Go
Question 3 - Adresses basse et haute
L'adresse comporte 30 bits.
a- @basse : L'adresse la plus petite est constituée de 30 zéros.
- En binaire : (00 0000 0000 0000 0000 0000 0000 0000)_2
- En hexadécimal : (00000000)_16
b- @haute : L'adresse la plus grande est constituée de 30 uns.
- En binaire : (11 1111 1111 1111 1111 1111 1111 1111)_2
- En hexadécimal : Les 30 bits se découpent en un groupe de 2 bits (11_2 = 3_16) suivi de 7 groupes de 4 bits (1111_2 = F_16). Ce qui donne (3FFFFFFF)_16.
Question 4 - Organisation en blocs
Nous avons une Taille de Bloc (TB) fixée à 1 Giga-bits, soit 2^30 bits.
- Nombre de Blocs (NB) : TMC ÷ TB = 2^34 ÷ 2^30 = 2^4 = 16 blocs.
- Nombre de cases par bloc (NCB) : TB ÷ TCM = 2^30 ÷ 2^4 = 2^26 cases par bloc.
- Nombre de lignes d'adresse mémoire (NL@M) : 30 lignes.
- Nombre de bits pour identifier le bloc (NbDB) : 4 bits (puisqu'il y a 2^4 = 16 blocs).
- Nombre de lignes d'adresse dans un bloc (NL@B) : 26 lignes (puisqu'il y a 2^26 cases dans un bloc).
Plages d'adresses des 16 blocs en binaire : Les 4 bits de poids fort (A29 à A26) identifient le numéro du bloc (de 0000 à 1111). Les 26 bits restants (A25 à A0) sont tous à 0 pour l'adresse basse (@b) et tous à 1 pour l'adresse haute (@h).
| Bloc | A29 à A26 (Numéro) | A25 ... A0 (@b et @h) |
|---|---|---|
| Bl0 | 0000 | @b : 0...0 <br> @h : 1...1 |
| Bl1 | 0001 | @b : 0...0 <br> @h : 1...1 |
| Bl2 | 0010 | @b : 0...0 <br> @h : 1...1 |
| Bl3 | 0011 | @b : 0...0 <br> @h : 1...1 |
| Bl4 | 0100 | @b : 0...0 <br> @h : 1...1 |
| Bl5 | 0101 | @b : 0...0 <br> @h : 1...1 |
| Bl6 | 0110 | @b : 0...0 <br> @h : 1...1 |
| Bl7 | 0111 | @b : 0...0 <br> @h : 1...1 |
| Bl8 | 1000 | @b : 0...0 <br> @h : 1...1 |
| Bl9 | 1001 | @b : 0...0 <br> @h : 1...1 |
| Bl10 | 1010 | @b : 0...0 <br> @h : 1...1 |
| Bl11 | 1011 | @b : 0...0 <br> @h : 1...1 |
| Bl12 | 1100 | @b : 0...0 <br> @h : 1...1 |
| Bl13 | 1101 | @b : 0...0 <br> @h : 1...1 |
| Bl14 | 1110 | @b : 0...0 <br> @h : 1...1 |
| Bl15 | 1111 | @b : 0...0 <br> @h : 1...1 |
Plages d'adresses des 16 blocs en hexadécimal :
| Bloc | Adresse Basse (@b) | Adresse Haute (@h) |
|---|---|---|
| Bl0 | 00000000 | 03FFFFFF |
| Bl1 | 04000000 | 07FFFFFF |
| Bl2 | 08000000 | 0BFFFFFF |
| Bl3 | 0C000000 | 0FFFFFFF |
| Bl4 | 10000000 | 13FFFFFF |
| Bl5 | 14000000 | 17FFFFFF |
| Bl6 | 18000000 | 1BFFFFFF |
| Bl7 | 1C000000 | 1FFFFFFF |
| Bl8 | 20000000 | 23FFFFFF |
| Bl9 | 24000000 | 27FFFFFF |
| Bl10 | 28000000 | 2BFFFFFF |
| Bl11 | 2C000000 | 2FFFFFFF |
| Bl12 | 30000000 | 33FFFFFF |
| Bl13 | 34000000 | 37FFFFFF |
| Bl14 | 38000000 | 3BFFFFFF |
| Bl15 | 3C000000 | 3FFFFFFF |
(Note de calcul : Le pas d'un bloc en hexadécimal est de 2^26 = 04000000_16. On ajoute donc cette valeur pour trouver l'adresse basse du bloc suivant).
Exercice 3 - Mots Mémoire et Mots Cache
Question 1 - Conversion des mots en bits et octets
Le "Mot Mémoire" (MM) est l'unité de base transférable depuis la mémoire. Le document original utilise le suffixe "d" pour désigner des "digits" hexadécimaux (un chiffre hexadécimal = 4 bits).
- MM = 4 octets = 2^2 × 2^3 = 2^5 = 32 bits = 8d (car 32 bits ÷ 4 bits = 8 caractères hexadécimaux).
- MW (Mot Cache ou Ligne de cache) = 128 bits = 2^7 bits = 2^4 × 2^3 = 16 octets = 32d.
Question 2 - Relation entre MW et MM
Il s'agit de trouver combien de Mots Mémoire (MM) tiennent dans une Ligne de Cache (MW).
- MW ÷ MM = 128 bits ÷ 32 bits = 4
- Donc : MW = 4 MM
Question 3 - Nombre d'opérations de lecture
Puisque le bus permet de lire un Mot Mémoire à la fois, et qu'il y a 4 Mots Mémoire dans une ligne de cache, il faudra 4 opérations de lecture pour remplir complètement une ligne de cache (MW).
Exercice 4 - La mémoire cache
Question 1 - Différences qualitatives
| Caractéristique | Mémoire Centrale (MC) | Mémoire Cache (MCa) |
|---|---|---|
| Capacité de stockage | Supérieure | Inférieure |
| Vitesse d'accès | Moins rapide | Plus rapide |
| Coût par unité | Faible | Élevé |
| Technologie matérielle | SRAM, DRAM... | Uniquement SRAM |
Question 2 - Calcul de la taille de la Mémoire Cache (TMCache)
La taille totale d'un cache (TMCache) s'exprime comme le produit du nombre de lignes (NLcache) par la taille complète d'une ligne (TLcache). Formule : TMCache = NLcache × TLcache
Calcul des composantes :
- NLcache = 2048 lignes (donné).
- TLcache = Bit de Validité (TBV) + Bits du Bloc (NbDB) + Données (TB).
Trouvons NbDB et TB :
- TCM (Taille Case Mémoire) = 1 octet = 2^3 = 8 bits.
- EAD = 2^32 mots mémoire (MM).
- Taille d'un bloc en données (TB) = 32 bits = 4 mots mémoire = 2^2 × 2^3 = 2^5 bits.
- TMC (Taille Mémoire Centrale) = EAD × TCM = 2^32 × 2^3 = 2^35 bits.
- Nombre de Blocs (NB) dans la mémoire centrale = TMC ÷ TB = 2^35 ÷ 2^5 = 2^30 blocs.
- Pour adresser 2^30 blocs, il faut NbDB = 30 bits.
Calcul final de la taille :
- TLcache = 1 (validité) + 30 (tag du bloc) + 32 (données) = 63 bits.
- TMCache = 2048 lignes × 63 bits = 129 024 bits.
- Conversion en octets : 129 024 ÷ 8 = 16 128 octets.
Question 3 - Récupération du contenu des cases
L'objectif est d'expliquer ce qui se passe lors de la requête de la case mémoire C48.
Nous savons qu'il y a NCB = TB ÷ TCM = 32 bits ÷ 8 bits = 4 cases par bloc.
Étape 1 : Déterminer l'indice du bloc contenant C48
- Indice du bloc = indice de la case demandée ÷ NCB
- Indice du bloc = 48 ÷ 4 = 12 (avec un Reste = 0).
- La case 48 se trouve donc dans le bloc B12, à l'index de décalage 0.
Étape 2 : Chercher le bloc B12 dans le cache En lisant l'état actuel du cache (colonne "Bits qui Désignent un Bloc") :
- L0 : L'adresse de bloc est (10100)_2 = 20_10 (Valide, BV=1).
- L2 : L'adresse de bloc est (11111)_2 = 31_10 (Valide, BV=1). Le bloc B12 n'existe pas dans le cache. C'est un défaut de cache.
Étape 3 : Récupérer B12 depuis la MC et le placer en cache
L'indice de la première case du B12 est : Indice du bloc × NCB = 12 × 4 = 48.
Le bloc B12 contient donc les cases C48, C49, C50 et C51.
On ajoute ou on écrase une ligne dans le cache pour ce bloc. La nouvelle ligne aura un BV=1 et comme identifiant de bloc la valeur 12 (soit 00...001100 en binaire sur 30 bits).
Le contenu (donné par l'énoncé) est enregistré : 11111111110001110111101101011111.
Étape 4 : Extraire le contenu de la case C48 Pour extraire la case exacte, on se sert du Reste calculé à l'étape 1.
- Décalage (en bits) = Reste × TCM = 0 × 8 bits = 0 bits.
- On extrait les 8 bits (TCM) à partir du décalage 0.
- En lisant les premiers 8 bits depuis la gauche du bloc chargé, le contenu de C48 est : (11111111)_2.
Méthode
Face à un examen d'architecture d'ordinateurs sur l'organisation de la mémoire, l'erreur la plus fréquente réside dans la confusion entre les unités. Suivez toujours ces trois règles :
- Distinguez les contenants des contenus : Un nombre de "cases" (adresses) n'est pas une taille totale. Si vous avez 2^30 cases (EAD) et que chaque case fait 16 bits, la capacité totale n'est pas de 2^30 bits, mais de 2^30 × 16 bits.
- Identifiez l'unité de la donnée : Ramenez toujours vos capacités en bits pour le calcul interne (tag de cache, taille de bloc, capacité du bus) avant de repasser en octets (o), en Kilo-octets (Ko) ou en Méga-octets (Mo) pour le résultat final demandé par l'exercice.
- Visualisez l'adresse comme une structure : Une adresse globale est toujours découpée en champs matériels immuables. Le plus souvent : un champ "Numéro de Bloc" (poids fort) et un champ "Décalage dans le bloc" (poids faible). Diviser le numéro de la case par le nombre de cases par bloc donne systématiquement le numéro du bloc (le quotient) et la position exacte à l'intérieur du bloc (le reste).
Commentaires
Aucun commentaire pour le moment. Posez la première question.