No projeto de um sistema digital, deve-se ter em mente que hardware menor geralmente é mais rápido do que hardware maior. A propagação do sinal é uma das principais causas de atrasos. No caso da memória, quanto maior mais atraso de sinal e mais níveis para decodificar endereços. Na maioria das tecnologias, pode-se obter memórias menores que são mais rápidas do que memórias maiores. As memórias mais rápidas estão geralmente disponíveis em números menores de bits por integrado e custam substancialmente mais por byte. Arquiteturas de Alto Desempenho - Prof a Luiza Mourelle
O aumento da largura de banda da memória e a diminuição do tempo de acesso à memória são também importantes para o desempenho do sistema. O princípio da localidade se baseia no fato de que, num intervalo virtual de tempo, os endereços virtuais gerados por um programa tendem a ficar restritos a pequenos conjuntos do seu espaço. Isto se deve a iterações, seqüenciamento das instruções e estruturas em bloco. Assim sendo, deveríamos manter os itens mais recentemente utilizados na memória mais rápida e o mais próximo possível da CPU. Arquiteturas de Alto Desempenho - Prof a Luiza Mourelle 2
Há três componentes do princípio da localidade, que coexistem num processo ativo: localidade temporal: há uma tendência a que um processo faça referências futuras a posições feitas recentemente; localidade espacial: há uma tendência a que um processo faça referências a posições na vizinhaça da última referência; localidade seqüencial: há uma tendência a que um processo faça referência à posição seguinte à atual. Arquiteturas de Alto Desempenho - Prof a Luiza Mourelle 3
Hierarquia de memória consiste em diferentes níveis de memória, associados a diferentes velocidades de acesso e tamanhos. nível nível 2... aumento no tempo de acesso nível n tamanho da memória Arquiteturas de Alto Desempenho - Prof a Luiza Mourelle 4
Os níveis da hierarquia são subconjuntos uns dos outros. Todos os dados encontrados em um nível também são encontrados no nível abaixo dele e assim sucessivamente. CPU registradores cache barramento de memória memória barramento de e/s dispositivos de entrada e saída < KB < 6 MB < 6 GB > 00 GB 0,25-0,5 ns 0,5-25 ns 80-250 ns 5 ms 20000-00000 MB/s 5000-0000 MB/s 000-5000 MB/s 20-50 MB/s CMOS CMOS SRAM CMOS DRAM disco magnético compilador hardware sistema operacional sistema operacional e usuário Arquiteturas de Alto Desempenho - Prof a Luiza Mourelle 5
Taxa de acerto (hit ratio - h) consiste na proporção dos acessos à memória encontrados em um nível da hierarquia. Taxa de falha (miss ratio - m) consiste na proporção dos acessos à memória não encontrados em um nível da hierarquia. m = h Ciclos de parada por memória (ncp) consiste do número de ciclos que a CPU espera por um acesso à memória, quando ocorre uma falha de acesso. Arquiteturas de Alto Desempenho - Prof a Luiza Mourelle 6
O tempo de execução da CPU deve, então, levar em conta o número de ciclos de parada por memória: ( ncc + ncp) cc tc = O número de ciclos de parada depende do número de erros (ne) e do custo por erro ou penalidade de erro (pe): ncp = ne ncp = ni erros pe instrução ncp = ni acessosàme m pe instrução mória pe Arquiteturas de Alto Desempenho - Prof a Luiza Mourelle 7
Um bloco consiste da unidade mínima de informação que pode estar presente ou ausente entre dois níveis da hierarquia. A memória principal, de 2 m bytes, é dividida em blocos consecutivos de b bytes, totalizando (2 m )/b blocos. Cada bloco tem um endereço, que é um múltiplo de b, e o tamanho do bloco é, normalmente, uma potência de 2. O cache associativo apresenta um número de posições, cada uma contendo um bloco e seu número de bloco, junto com um bit, que diz se aquela posição está em uso ou não. A ordem das entradas é aleatória. Arquiteturas de Alto Desempenho - Prof a Luiza Mourelle 8
endereço 0 37 0 nº do bloco v nº do bloco valor 0 37 4 52 600 23 2 40 memória principal 8 2 40 2 K posições 0 60248 290380 635 3 (2 24 ) - ~ ~ ~ 22 bits 32 bits cache associativo Arquiteturas de Alto Desempenho - Prof a Luiza Mourelle 9
Se o cache estiver cheio, uma entrada terá que ser descartada para deixar lugar para uma nova. Quando aparece um endereço de memória, o microprograma deve calcular o número do bloco e, então, procurar aquele número no cache. Para evitar a pesquisa linear, o cache associativo pode fazer uso de uma memória associativa, que compara simultaneamente todas as entradas com o número do bloco dado. Isto torna o cache associativo caro. No cache com mapeamento direto, cada bloco é colocado numa posição, cujo número pode corresponder, por exemplo, ao resto da divisão do número do bloco pelo número de posições. Arquiteturas de Alto Desempenho - Prof a Luiza Mourelle 0
posição v tag valor endereços 0 0 37 0, 4096, 892, 2288,... 600 23 4, 400, 896, 2292,... 2 2 40 8, 404, 8200, 2296,... 3 0 cache com mapeamento direto 023 0 4092, 888, 2284, 6380,... Arquiteturas de Alto Desempenho - Prof a Luiza Mourelle
O campo tag guarda a parte do endereço que não participa do endereçamento da posição. Ex: Seja a palavra no endereço 892. endereço da palavra tag posição 00 2 bits 0 bits 2 Os dois bits menos significativos são 0, pois os blocos são inteiros e múltiplos do tamanho do bloco (4 bytes). O fato de que blocos múltiplos mapeiam na mesma posição pode degradar o desempenho do cache, se muitas palavras que estiverem sendo usadas mapeiem na mesma posição. Arquiteturas de Alto Desempenho - Prof a Luiza Mourelle 2
No cache associativo por conjunto utiliza-se um cache de mapeamento direto com múltiplas entradas por posição. posição v tag valor v tag valor v tag valor 0 2 3... 023 entrada 0 entrada entrada n- Arquiteturas de Alto Desempenho - Prof a Luiza Mourelle 3
Tanto o cache associativo quanto o de mapeamento direto são casos especiais do cache associativo por conjunto. O cache de mapeamento direto é mais simples, mais barato e tem tempo de acesso mais rápido. O cache associativo tem uma taxa de acerto maior para qualquer dado número de posições, pois a probabilidade de conflitos é mínima. Arquiteturas de Alto Desempenho - Prof a Luiza Mourelle 4
Uma técnica para manipular escritas é denominada write through, quando uma palavra é escrita de volta na memória imediatamente após ter sido escrita no cache (consistência de dados). Outra técnica é denominada copy back, em que a memória só é atualizada quando a entrada é expurgada do cache para permitir que outra entrada tome conta da posição (consistência de dados). Arquiteturas de Alto Desempenho - Prof a Luiza Mourelle 5
A técnica write through causa mais tráfego de barramento. A técnica copy back pode gerar inconsistência se o processador efetuar uma transferência entre memória e disco, enquanto a memória não tiver sido atualizada. Se a razão de leituras para escritas for muito alta, pode ser mais simples usar write through. Se houver muitas escritas, pode ser melhor usar copy back e fazer com que o microprograma expurgue todo o cache antes de uma operação de entrada/saída. Arquiteturas de Alto Desempenho - Prof a Luiza Mourelle 6