Skip to content

Trabalho da cadeira de Arquitetura e Organização de Computadores II, implementação de um simulador de cache

Notifications You must be signed in to change notification settings

JelsonRodrigues/cache_simulator_java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Trabalho da cadeira de Arquitetura e Organização de Computadores II, implementação de um simulador de cache

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published