Dernière modification avant rendu ! Ajout de l'algorithme FIFO, création du readme.md FIFO et ajout de makefiles

This commit is contained in:
Moncef STITI 2024-10-07 20:37:16 +02:00
parent 0e178764eb
commit 574b9099a4
15 changed files with 858 additions and 13 deletions

13
fifo/Makefile Normal file

@ -0,0 +1,13 @@
# Nom de l'exécutable
TARGET = cache_simulator
# Fichier source
SRC = cache_fifo.c
# Règle par défaut : compilation et lien
all:
gcc $(SRC) -o $(TARGET) -lm -Wall
# Nettoyage des fichiers générés
clean:
rm -f $(TARGET)

66
fifo/README.md Normal file

@ -0,0 +1,66 @@
# 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 :
```bash
gcc -o cache_simulator cache_fifo.c -lm
```
ou
```bash
make
```
## ⚙️ Exécution
Pour exécuter le programme, utilisez la ligne de commande suivante :
```c
./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
1. **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.
2. **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.
3. **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

726
fifo/cache_fifo.c Normal file

File diff suppressed because it is too large Load Diff

13
lru/Makefile Normal file

@ -0,0 +1,13 @@
# Nom de l'exécutable
TARGET = cache_simulator
# Fichier source
SRC = cache_lru.c
# Règle par défaut : compilation et lien
all:
gcc $(SRC) -o $(TARGET) -lm -Wall
# Nettoyage des fichiers générés
clean:
rm -f $(TARGET)

@ -2,12 +2,18 @@
## 📖 Description
Le programme `cache.c` simule le comportement d'un cache de processeur. 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.
Le programme `cache_lru.c` simule le comportement d'un cache de processeur. 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 :
```bash
gcc -o cache_simulator cache.c -lm
gcc -o cache_simulator cache_lru.c -lm
```
ou
```bash
make
```
## ⚙️ Exécution

@ -1,10 +1,10 @@
/*
* Fichier : cache.c
* Fichier : cache_lru.c
* Auteur : Moncef STITI
* Date : 10/11/2024
* Version : 1.0
* Description : Ce programme permet de simuler une mémoire cache avec comme algorithme d'éviction d'une ligne "LRU" (Least Recently Used).
* Compilation : Pour compiler le programme, on utilise la commande suivante : gcc cache.c -o simulateur_cache -lm -Wall
* Compilation : Pour compiler le programme, on utilise la commande suivante : gcc cache_lru.c -o cache_simulator -lm -Wall ou simplement make
*/
#include<stdio.h>
#include<sys/types.h>

13
random/Makefile Normal file

@ -0,0 +1,13 @@
# Nom de l'exécutable
TARGET = cache_simulator
# Fichier source
SRC = cache_random.c
# Règle par défaut : compilation et lien
all:
gcc $(SRC) -o $(TARGET) -lm -Wall
# Nettoyage des fichiers générés
clean:
rm -f $(TARGET)

@ -2,12 +2,18 @@
## 📖 Description
Le programme `cache.c` simule le comportement d'un cache de processeur. 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.
Le programme `cache_random.c` simule le comportement d'un cache de processeur. 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 :
```bash
gcc -o cache_simulator cache.c -lm
gcc -o cache_simulator cache_random.c -lm
```
ou
```bash
make
```
## ⚙️ Exécution

@ -1,10 +1,10 @@
/*
* Fichier : cache.c
* Fichier : cache_random.c
* Auteur : Moncef STITI
* Date : 02/11/2024
* Version : 1.0
* Description : Ce programme permet de simuler une mémoire cache avec comme algorithme d'éviction d'une ligne "Random" (Aléatoire).
* Compilation : Pour compiler le programme, on utilise la commande suivante : gcc cache.c -o simulateur_cache -lm -Wall
* Compilation : Pour compiler le programme, on utilise la commande suivante : gcc cache_random.c -o cache_simulator -lm -Wall ou make
*/
#include <stdio.h>
#include <stdlib.h>

@ -8,4 +8,4 @@ Ce répertoire contient des exemples de fichiers trace utilisés pour le simulat
## 🛠️ Auteur des fichiers traces
- Denis MONNERAT (Professeur à l'IUT de Fontainebleau)
- Denis MONNERAT (Professeur à l'IUT de Fontainebleau)

@ -13,7 +13,7 @@
2 21f
2 223
2 220
1 7fffcca4
1 7fffcca4
0 54
1 7fffcca0
1 7fffcc9c
@ -998,4 +998,3 @@
1 7fffcbbc
2 56dfb
2 56dff

@ -13,7 +13,7 @@
0 21f
0 223
0 220
1 7fffcca4
1 7fffcca4
0 54
1 7fffcca0
1 7fffcc9c
@ -46,3 +46,4 @@
0 531d5
0 531d9
0 7fffcc84

@ -832475,3 +832475,4 @@
2 432724
2 432728
2 4328

@ -36,3 +36,4 @@ Exemple : `-o trace_file` -> crée le fichier `trace_file`
## 🛠️ Auteur
- Moncef STITI

@ -140,4 +140,4 @@ int main(int argc, char *argv[]) {
printf("Le fichier trace '%s' avec %d lignes a été généré avec succès.\n", output_file, total_lines);
return EXIT_SUCCESS;
}
}