Disciplina: Arquitetura e Organização de Computadores II
Autores:
- Milena Ferreira
- Kananda Winter
Este projeto consiste em um simulador de cache funcional e parametrizável, desenvolvido para a disciplina de Arquitetura e Organização de Computadores II. O programa simula o comportamento de uma hierarquia de memória cache, permitindo ao usuário configurar dinamicamente suas principais características através de parâmetros de linha de comando. O simulador processa um arquivo binário contendo uma sequência de endereços de memória de 32 bits e analisa o desempenho da configuração de cache especificada, calculando métricas essenciais como taxas de hit e miss (compulsório, de capacidade e de conflito).
- Configuração flexível: Permite definir o número de conjuntos, tamanho do bloco e nível de associatividade
- Políticas de substituição: Suporte para Random (Aleatória), FIFO (First-In, First-Out) e LRU (Least Recently Used)
- Múltiplos formatos de saída: Formato detalhado para análise humana e formato padrão para avaliação automatizada
- Simulação realística: Baseada em endereços de 32 bits com cache endereçada a byte
O simulador deve ser executado via linha de comando. O nome do executável deve ser cache_simulator, independentemente da linguagem de programação utilizada.
python cache_simulator.py <nsets> <bsize> <assoc> <substituição> <flag_saida> <arquivo_de_entrada><nsets>: O número total de conjuntos (ou linhas) na cache<bsize>: O tamanho de cada bloco em bytes<assoc>: O grau de associatividade (número de vias por conjunto)<substituição>: A política de substituição para caches associativas:R: Aleatória (Random)F: FIFO (First-In, First-Out)L: LRU (Least Recently Used)
<flag_saida>: Controla o formato da saída:0: Formato livre com textos e labels (ex: "Taxa de hit = 90%")1: Formato padrão para avaliação (valores numéricos separados por espaços)
<arquivo_de_entrada>: Caminho para o arquivo binário com endereços de 32 bits (formato big-endian)
Os resultados são exibidos na seguinte ordem:
- Total de Acessos
- Taxa de Hit
- Taxa de Miss
- Taxa de Miss Compulsório
- Taxa de Miss de Capacidade
- Taxa de Miss de Conflito
Simulação com cache de 256 conjuntos, blocos de 4 bytes, mapeamento direto, política aleatória e formato padrão:
python cache_simulator.py 256 4 1 R 1 bin_100.binSaída Esperada:
100 0.9200 0.0800 1.0000 0.0000 0.0000
- O simulador trabalha com endereços de 32 bits em formato big-endian
- A cache é endereçada a byte
- Todas as taxas são calculadas como valores decimais entre 0 e 1
- O arquivo de entrada deve conter endereços sequenciais em formato binário