Para compilá-lo utilise: gcc -o mountain mountain.c clock.c fcyc2.c No Linux Para cálculo de memória deve utilizar a seguinte notação Memória armazena grande número de bits m x n: m palavras de n bits cada k = Log2(m) sinais de endereço ou m = 2^k palavras ex.:, Memória 4,096 x 8 : 32,768 bits 12 sinais de endereços 8 sinais de dados (input/output) A memória cache opera em função de um princípio estatístico comprovado: Em geral, os programas tendem a referenciar várias vezes pequenos trechos de programas, como loops, sub-rotinas, funções e só tem sentido porque programas executados linearmente, sequencialmente, são raros. Desta forma, algoritmos (chamados algoritmos de cache) podem controlar qual parte do código ficará copiado na cache, a cada momento. Quando a UCP busca um determinado trecho de código e o encontra na cache, dá-se um "cache hit”, enquanto se o dado não estiver presente na cache será necessário requisitar o mesmo à MP, acarretando atraso no processamento e dá-se um "cache miss" ou "cache fault". O índice de cache hit ou taxa de acerto da cache é geralmente acima de 90%. Impacto da cache no desempenho do sistema Caches maiores permitem taxas de faltas menores mas a custo maior Cache de 2 Kbyte: miss rate = 15%, custo de hit = 2 ciclos, custo de miss = 20 ciclos Custo médio de acesso a memória= (0.85 * 2) + (0.15 * 20) = 4.7 ciclos Cache de 4 Kbyte: miss rate = 6.5%, custo de hit = 3 ciclos, custo de miss = 20 ciclos Custo médio de acesso a memória = (0.935 * 3) + (0.065 * 20) = 4.105 ciclos (melhora) Cache de 8 Kbyte: miss rate = 5.565%, custo de hit = 4 ciclos, custo de miss = 20 ciclos Custo médio de acesso a memória = (0.94435 * 4) + (0.05565 * 20) = 4.8904 ciclos (pior) Assim como na memória virtual o gerenciamento da cache também tira proveito do conceito de concentração de referência; Pequenos laços e sub-rotinas frequentemente referenciados e que estejam integralmente localizados na cache. Pode olha no código do mountain.c que a rotina de acesso é feita em ciclos. Esse arquivo já existe nativo no source-kernel do linux. O que fiz foi alterar o valor do ciclo e gerar um arquivo de saída com os valores da cache.