Esse programa é um simulador de acesso à memória cache que recebe como entrada os endereços a serem acessados (no formato Hexadecimal). A partir da entrada, ele fará a busca de todos os endereços na cache, utilizando um dos 3 tipos de mapeamento (Direto, Parcialmente Associativo ou Totalmente Associativo). Se a palavra não for encontrada (houver um miss), o contador de miss será atualizado e a palavra será escrita na cache.
Cada vez que a taxa de miss for maior que X% (em que X é um percentual definido pelo usuário), o tipo de mapeamento deve ser alterado.
Para este programa, o ciclo dos tipos de mapeamento é:
→ Direto → Parcialmente Associativo (com a memória dividida em 4 blocos) → Totalmente Associativo →
Para compilar esse programa, tudo o que você precisa fazer é digitar:
make clean
make
E para executá-lo:
./bin/memory_mapping arquivo_com_endereços taxa_maxima_de_miss [tamanho_da_cache]
Onde o arquivo_com_endereços
representa um arquivo com todos os endereços a serem buscados pelo programa (um por linha), a taxa_maxima_de_miss
é o percentual (em ponto flutuate) que definirá a troca do tipo de mapeamento e o tamanho_da_cache
é um parâmetro opcional para definir o tamanho da memória cache (no mínimo 4 posições), caso não seja informado, ele assumirá um valor padrão de 16 posições.
input.dat
0x0E
0xED
0x39
0x39
0xAF
0x34
0x3F
0x39
0xED
0x3F
0x45
0x13
0x3F
0xAF
Esse projeto foi desenvolvido por Elton de Souza Vieira