Le mappage direct est une conception de mémoire cache dans laquelle chaque adresse mémoire est mappée sur une ligne de cache spécifique. Cela signifie qu'il n'y a qu'un seul emplacement de cache possible pour chaque adresse mémoire. Le mappage direct est simple à mettre en œuvre et nécessite une faible surcharge matérielle, mais il peut entraîner des conflits de cache si plusieurs adresses mémoire sont mappées sur la même ligne de cache.
Pour calculer l'index de ligne de cache pour une adresse mémoire donnée, l'adresse mémoire est divisée par la taille de la ligne de cache. Le reste de cette division est l'index de la ligne de cache. Par exemple, si l'adresse mémoire est 0x100 et que la taille de la ligne de cache est de 16 octets, l'index de la ligne de cache est 4.
La fonction de mappage direct mappe une adresse mémoire à un index de ligne de cache selon la formule suivante :
```
cacheLineIndex =adresse mémoire mod cacheLineSize
```
Où:
* cacheLineIndex est l'index de la ligne de cache
* adresse mémoire est l'adresse mémoire
* taille de la ligne de cache est la taille de la ligne de cache
Voici un exemple du fonctionnement du mappage direct. Considérons un cache avec une taille de ligne de cache de 16 octets. Le tableau suivant présente les adresses mémoire mappées à chaque index de ligne de cache :
| Index des lignes de cache | Adresses mémoire |
|---|---|
| 0 | 0x000, 0x010, 0x020, ..., 0x0F0 |
| 1 | 0x100, 0x110, 0x120, ..., 0x1F0 |
| 2 | 0x200, 0x210, 0x220, ..., 0x2F0 |
| 3 | 0x300, 0x310, 0x320, ..., 0x3F0 |
| ... | ... |
Maintenant, disons que nous voulons accéder à l'adresse mémoire 0x123. Pour calculer l'index de ligne de cache pour cette adresse, nous divisons 0x123 par 16. Le reste de cette division est 3. Par conséquent, l'index de ligne de cache pour l'adresse mémoire 0x123 est 3.
Selon le tableau ci-dessus, l'index de ligne de cache 3 correspond aux adresses mémoire 0x300, 0x310, 0x320, ..., 0x3F0. Par conséquent, l'adresse mémoire 0x123 est mappée sur la ligne de cache qui contient les adresses mémoire 0x300, 0x310, 0x320, ..., 0x3F0.
|