https://github.com/franciscoknebel/cachesim
https://github.com/franciscoknebel/cachesim
c cache-simulator
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/franciscoknebel/cachesim
- Owner: FranciscoKnebel
- License: mit
- Created: 2016-11-05T21:13:57.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2016-11-18T02:26:41.000Z (over 9 years ago)
- Last Synced: 2025-05-13T15:17:07.125Z (about 1 year ago)
- Topics: c, cache-simulator
- Language: C
- Size: 131 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
README
# CacheSim
Simulador de cache
### Compiler: GCC 6.2
```
Makefile:
make
build files
make run ARGS
run built program
make tests
runs the test inputs from the test folder
make clean
clean *.exe
```
ARGS:
- cache_description.dat input.dat output.dat
## Estrutura da cache
## Replacement Policies
### LRU
Least Recently Used
lastAccess no bloco.
##### Set não está cheio:
Inserção de elemento:
Ao inserir um elemento, lastAccess recebe o valor 1, pois é o mais recente.
Todos os outros elementos válidos devem incrementar o seu valor em 1.
Modificação de elemento:
Já existe um bloco com essa tag no set, logo não é necessário uma inserção.
Salvar lastAccess do elemento. Elemento alterado recebe lastAccess com valor 1, pois é o mais recente.
Os elementos válidos com lastAccess menor do que o antigo desse elemento são incrementados em um.
Os elementos válidos com lastAccess maior permanecem com o mesmo valor de antes.
##### Set está cheio:
Inserção de elemento:
O set está completamente cheio, e está sendo pedido a inserção de um elemento nessa lista.
Será necessário retirar o elemento com o maior lastAccess da lista, que deve ter valor igual à lineSize * associativity.
Alterar os elementos desse bloco para os valores do novo elemento, e alterar o lastAccess para 1.
Todos os outros elementos agora deverão ser incrementados em 1, pois não há valores com lastAccess maior do que o antigo.
Modificação de elemento:
Mesmo procedimento do caso Set não está cheio.
### FIFO
First In First Out
orderInsert no bloco.
##### Set não está cheio:
Inserção de elemento:
Ao inserir um elemento, orderInsert recebe o valor 1, pois é o mais recente.
Todos os outros elementos válidos devem incrementar o seu valor em 1.
Modificação de elemento:
Já existe um bloco com essa tag no set, logo não é necessário uma inserção.
Não foi inserido um elemento, logo não é necessário modificar orderInsert do set.
##### Set está cheio:
Inserção de elemento:
O set está completamente cheio, pedindo uma inserção de elemento na lista.
O elemento com maior orderInsert (que deve ser igual à lineSize * associativity) do set será removido da lista,
pois ele foi o "primeiro" a ser inserido, e o "primeiro" que deve ser removido.
Incrementar em um o valor de orderInsert de todos os elementos do set, e o maior será substituído
pelo novo elemento, recebendo orderInsert 1.
Modificação de elemento:
Mesmo procedimento do caso Set não está cheio.
-----
## Authors
* **Francisco Knebel** - *Initial work* - [FranciscoKnebel](https://github.com/franciscoknebel)
See also the list of [contributors](https://github.com/franciscoknebel/cacheSim/contributors) who participated in this project.
## License
This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details