Skip to content

Latest commit

 

History

History
66 lines (49 loc) · 3.46 KB

README.md

File metadata and controls

66 lines (49 loc) · 3.46 KB

Cache Simulator

Este repositório contém um simulador de cache parametrizável por linha de comando

São considerados para a simulação endereços de 32 bits endereçados a byte

A entrada é um arquivo binário que contém valores inteiros sem sinal de 4 bytes (a.k.a. 32 bits) que são os endereços requisitados à memória cache

Os valores são lidos do arquivo e é simulado acesso aos endereços de memória e no final da simulação é retornado um relatório com informações de Hits, Misses, Tipos dos Misses

Foi feito como o trabalho da cadeira de Arquitetura e Organização de Computadores II

Funcionalidades

O usuário define as configurações da cache a ser simulada. Pode escolher o número de conjuntos, tamanho do bloco, nível de associatividade e a política de substituição

Existem 5 políticas de substituição implementadas, são elas
Random,
Least Recently Used,
First in Firt out,
Least Frequently Used,
Most Recently Used

É possivel obter a saída em 2 tipos diferentes de formatação (com e sem labels)

Linha de comando

A forma de utilizar o simulador é a seguinte
java -jar cache_simulator.jar <nsets> <bsize> <assoc> <replacement> <formato_saida> <arquivo_entrada>

nsets -> é o número de conjuntos da cache a ser simulada
bsize -> é o número de bytes presentes em cada bloco
assoc -> é a associatividade a ser utilizada
replacement -> é a política de substituição a ser utilizada, pode ser:
L -> LRU
F -> FiFo
R -> Random
MRU -> MRU
LFU -> LFU
formato_saida-> é a forma que os dados serão exibidos, quando igual a 1 a saída tem o seguinte formato:
total_acessos hit_hate miss_rate percentual_misses_compulsorios percentual_misses_capacidade percentual_misses_conflito

quando diferente de 1, tem o seguinte formato:

Total de acessos: total_acessos
Total Hits: total_hits
Total Misses: total_misses
Total Misses Compulsórios: total_misses_compulsorios
Total Misses Capacidade: total_misses_capacidade
Total Misses Conflito: total_misses_conflito
Taxa de Hit: hit_rate
Taxa de Misses: miss_rate
Taxa Misses Compulsórios: percentual_misses_compulsorios
Taxa Misses Capacidade: percentual_misses_capacidade
Taxa Misses Conflito: percentual_misses_conflito

arquivo_entrada -> é o caminho para um arquivo binário que contém os endereços que serão requisitados na simulação. Cada endereço deve ser representado como inteiro de 32 bits sem sinal.

Um exemplo:
java -jar .\cache_simulator.jar 512 8 2 L 0 ./src/main/data/vortex.in.sem.persons.bin
A linha de comando acima simula uma cache de tamanho total 8KB, com 512 conjuntos, cada conjunto possui duas linhas (associatividade = 2), cada linha possui 8 bytes de informação, a política de substituição utilizada é a LRU e o formato de saída é livre e o arquivo de entrada é ./src/main/data/vortex.in.sem.persons.bin

Observações

Os valores de nsets, bsize e assoc devem ser potências de 2.
Existem arquivos com alguns endereços que podem ser utilizados como teste, dentro da pasta ./src/main/data/, cada arquivo possui uma versão em .txt e a versão .bin
O tempo de simulação para caches muito grandes e com associatividade muito alta ou totalmente associativas para as políticas LRU e LFU pode ser alto.