Simulateur de Cache - Version FIFO
📖 Description
Le programme cache_fifo.c
simule le comportement d'un cache de processeur en utilisant la politique FIFO. Il permet de suivre les hits et les misses ainsi que d'analyser les performances du cache en fonction des références mémoire fournies.
📦 Compilation
Pour compiler le programme, utilisez la commande suivante :
gcc -o cache_simulator cache_fifo.c -lm
ou
make
⚙️ Exécution
Pour exécuter le programme, utilisez la ligne de commande suivante :
./cache_simulator -s <cache_size(KB)> -l <line_size> -a <associativity> [-c] [-W] < <trace_file>
📝 Arguments
-
-s <cache_size(KB)>
: Taille du cache en kilooctets. (Obligatoire)
Exemple : -s 64 -> taille du cache de 64 KB -
-l <line_size>
: Taille de la ligne de cache en octets. (Obligatoire)
Exemple : -l 16 -> taille de ligne de 16 octets -
-a <associativity>
: Associativité du cache (nombre de lignes par ensemble). (Obligatoire)
Exemple : -a 4 -> associativité de 4 lignes -
-c
: Activer l'écriture en mode Write Back. (Optionnel)
Exemple : -c -> active le mode Write Back -
-W
: Activer la stratégie d'allocation d'écriture (Write Allocate). (Optionnel)
Exemple : -W -> active l'allocation d'écriture
📚 Fonctionnement de FIFO (First-In, First-Out)
La politique de remplacement First-In, First-Out (FIFO) est une méthode utilisée pour gérer les lignes de cache lorsque le cache est plein et qu'il est nécessaire de remplacer une ligne. FIFO remplace la ligne de cache qui a été chargée en premier, en supposant que les lignes les plus anciennes sont les moins susceptibles d'être utilisées à nouveau.
Principe de Fonctionnement
-
Gestion de l'Ordre: Chaque ligne de cache est gérée dans l'ordre dans lequel elle a été ajoutée au cache. La première ligne à être ajoutée sera la première à être remplacée lorsque le cache sera plein.
-
Ajout de Lignes: Lorsqu'une nouvelle ligne de cache doit être ajoutée, elle est insérée à la fin de la liste des lignes en cache.
-
Remplacement: Lorsque le cache atteint sa capacité maximale et qu'un nouvel accès nécessite l'allocation d'une ligne de cache, FIFO remplace la ligne qui a été la plus longtemps présente dans le cache.
Avantages et Inconvénients
-
Avantages:
- FIFO est simple à mettre en œuvre, car il nécessite peu de gestion de l'état par rapport à d'autres algorithmes comme LRU.
- Le mécanisme de remplacement est "constant" en temps, ce qui peut être bénéfique dans certaines situations.
-
Inconvénients:
- FIFO peut parfois être moins efficace que LRU, car il ne prend pas en compte la fréquence d'accès des lignes. Il est possible de remplacer une ligne encore fréquemment utilisée simplement parce qu'elle a été ajoutée au cache plus tôt.
- Le phénomène de "Belady's Anomaly" peut survenir, où augmenter la taille du cache entraîne en fait un plus grand nombre de misses.
🛠️ Auteur
- Moncef STITI