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:
parent
0e178764eb
commit
574b9099a4
13
fifo/Makefile
Normal file
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
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
726
fifo/cache_fifo.c
Normal file
File diff suppressed because it is too large
Load Diff
13
lru/Makefile
Normal file
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
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;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user