Baixe o app para aproveitar ainda mais
Prévia do material em texto
Arquitetura e Organização de Computadores HIERARQUIA DE MEMÓRIA PROF. T I AGO BOCK HOLT, M sc Fatos • Os programas gastam a maior parte do tempo acessando a memória. • Programadores gostariam de ter ao ser dispor quantidade ilimitada de memória com acesso instantâneo. • O projeto do sistema de memória segue alguns princípios os quais tentam dar a ilusão ao programador de que ele dispõe de uma grande quantidade de memória com tempo de acesso pequeno. Princípio da Localidade • Vamos supor que uma pesquisa sobre: Avanços no Hardware dos computadores. • Imagine uma biblioteca. O que você faria: Princípio da Localidade • Vamos supor que uma pesquisa sobre: Avanços no Hardware dos computadores. • Imagine uma biblioteca. Princípio da Localidade • Com uma boa seleção de livros sobre a mesa, existe uma boa probabilidade de que muitos dos tópicos de que precisa possam ser encontrados neles. Assim, pode-se gastar mais tempo apenas usando os livros na mesa sem precisar se deslocar às estantes da biblioteca. • Assim como não se precisa acessar todos os livros da biblioteca ao mesmo tempo, um programa não acessa todo o seu código ou dados ao mesmo tempo com igual probabilidade. • Princípio da localidade sustenta a maneira como você fez seu trabalho na biblioteca e o modo como os programas funcionam. Ou seja, diz que os programas acessam uma parte relativamente pequena do seu espaço de endereçamento em qualquer instante do tempo. Princípio da Localidade A hierarquia de memória explora o princípio da localidade – Localidade de memória é o princípio que diz que próximos acessos ao espaço de endereçamento tendem a ser próximos – Há dois tipos de localidade • Temporal • Espacial Localidade Temporal Se um item é referenciado, ele tenderá a ser referenciado novamente em breve. ◦ Ex: Se você trouxe um livro para examiná-lo, é provável que precise examiná-lo novamente em breve. Localidade Espacial Se um item é referenciado, os itens cujos endereços estão próximos tenderão a ser referenciados em breve. ◦ Ex: Os livros sobre o mesmo assunto são colocados juntos na biblioteca para aumentar a localidade. Princípio da localidade A localidade nos programas surge de estruturas de programa simples e naturais. ◦ Ex: Programas contém loops e, portanto, as instruções e os dados provavelmente são acessados de modo repetitivo, mostrando altas quantidades de localidade temporal. Os programas executam Instruções de forma sequencial. ◦ Ex: Acessos aos elementos de um array ou de um registro terão altos índices de localidade espacial. Hierarquia de memória Tiramos vantagem do princípio da localidade implementando a memória de um computador como uma hierarquia de memória. Consiste em múltiplos níveis de memória com diferentes velocidades e tamanhos. ◦ As memórias mais rápidas são mais caras por bit do que as memórias mais lentas e, portanto, são menores. Hierarquia de memória O sistema de memória é organizado como um hierarquia: ◦ Um nível mais próximo do processador em geral é um subconjunto de qualquer nível mais distante, e todos os dados são armazenados no nível mais abaixo. ◦ Ex: Os livros na mesa formam um subconjunto da biblioteca onde você está trabalhando. Uma hierarquia de memória pode consistir em múltiplos níveis, mas os dados são copiados apenas entre dois níveis adjacentes ao mesmo tempo. ◦ O nível superior – Mais perto do processador (menor, mais caro e mais rápido) A unidade mínima de informação pode estar presente ou ausente na hierarquia de dois níveis é denominada de BLOCO. Hierarquia de memória Cada par de níveis na hierarquia pode ser imaginado como tendo um nível superior e um nível inferior. Em geral, transfere-se um bloco inteiro quando copiamos algo entre os níveis. Hierarquia de memória - Conceitos Acertos: ◦ Se os dados requisitados pelo processador aparecerem em algum bloco no nível superior. Caso contrário, é chamada de Falhas. Taxa de acertos: ◦ É a fração dos acessos à memória encontrados no nível superior. Usado como medida de desempenho da hierarquia de memória. Taxa de falhas (1 – taxa de acertos): ◦ A proporção de acessos à não encontrados em um nível da hierarquia de memória. Hierarquia de memória - Conceitos Tempo de acerto: ◦ O tempo necessário para acessar um nível da hierarquia incluindo o tempo necessário para determinar se o acesso é um acerto ou uma falha. ◦ É o tempo para consultar os livros na mesa. Penalidade de falha: ◦ O tempo necessário para buscar um bloco de um nível inferior para um nível superior da hierarquia incluindo o tempo para acessar o bloco, transmissão entre os níveis e inseri-lo no nível que experimentou a falha. ◦ O tempo para apanhar outro livro das estantes e coloca-los na mesa. Hierarquia de memória Hierarquia de memória Hierarquia de memória Tecnologias Cache Todas as operações de memória do processador são feitas na cache. MISS – É uma requisição de palavra que não está na cache, um bloco de palavras que contém a memória solicitada é transferida para a cache, então a palavra é devolvida ao processador. HIT– Se a palavra solicitada já estiver na cache. Não é preciso uma acesso a memória para completar a requisição. BLOCK – Quantidade mínima de dados transferidos entre a cache e a memória. Processor Cache small, fast memory Main memory large, inexpensive (slow) words blocks O inventor da Cache M. V. Wilkes, “Slave Memories and Dynamic Storage Allocation,” IEEE Transactions on Electronic Computers, vol. EC-14, no. 2, pp. 270-271, April 1965. Princípios básicos de cache Imagine um lugar seguro para guardar coisas que precisamos examinar. No nosso exemplo da biblioteca, a cache seria: Cache foi o nome escolhido para representar o nível de hierarquia de memória entre o processador e a memória principal. Também usado para referenciar qualquer armazenamento usado para tirar proveito da localidade de acesso. Princípios básicos de cache Vamos considerar uma cache simples na qual cada requisição do processador é uma word e os blocos também consistem em um única word. Antes de requisitar, a cache contém uma coleção de referências recentes, X1, X2 ... e o processador requisita uma word Xn que não está na cache. Isso resulta em uma falha. memória principal (Xn) -> cache Princípios básicos de cache Como sabemos que o item de dados está na cache? Além disso, se estiver, como encontra- lo? A maneira mais simples de atribuir um local na cache para cada word da memória é atribuir um local na cache baseado no endereço da word na memória. Mapeamento Direto Princípios básicos de cache Exemplo Mapeamento Direto Como há oito words na cache, um endereço X é mapeado para a word de cache X módulo 8. Ou seja, os log2(8) = 3 𝑏𝑖𝑡𝑠 menos significativos são usados como o índice da cache. Princípios básicos de cache Ok, mas.... Como cada local da cache pode armazenar o conteúdo de diversos locais da memória, Como podemos saber se os dados na cache correspondem a word requisitada pelo processador? Incluímos uma Tag: Contém a parte superior (mais significativa) do endereço. No nosso exemplos basta ter uma Tag com os 2 bits mais significativos. Princípios básicos de cache Ok, mas.... Como reconhecer se um bloco de cache não possui informações válidas. Por exemplo, quando um processador é iniciado? Precisamos de um bit de validade para indicar se uma entrada contém um endereço válido. Se o bit não estiver ligado, não pode haver uma correspondência para esse bloco. 000 001 010 011 100 101 110 111 00000 00001 00010 0001100100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 10010 10011 10100 10101 10110 10111 11000 11001 11010 11011 11100 11101 11110 11111 Main memory Cache of 8 blocks 11 101 → memory address cache address: tag index 3 2 -w o rd a d d re s s a b le m e m o ry Block size = 1 word in d e x ( lo c a l a d d re s s ) ta g 00 10 11 01 01 00 10 11 Princípios básicos de cache Arquitetura e Organização de Computadores FUNCIONAMENTO DA CACHE PROF. T I AGO BOCK HOLT, M sc Funcionamento da cache Dinâmica da Cache Esse comportamento permite que uma cache tire proveito do princípio da localidade temporal: Words recentemente acessadas substitutem words menos referenciadas recentemente. Dinâmica da Cache Análogo a precisar de um livro da estante e não ter mais espaço na mesa para colocá-lo. Ou seja: Algum livro precisa ser devolvido à estante. Exemplo Cache com 1024 (210) linhas e com palavra de 32 bits. Algoritmo - Mapeamento Direto Considerações sobre os blocos Blocos maiores exploram a localidade espacial para diminuir as taxas de falhas. Porém a taxa de falhas pode subir se o tamanho de blocos que pode ser armazenado na cache se tornará pequeno e haverá uma grande competição entre esses blocos. Um bloco será retirado da cache antes que muitas de suas words sejam acessadas. Tratamento de Escritas Suponha que em uma instrução store, escrevemos os dados apenas na cache de dados. • Após a operação de escrita, a memória principal teria valores desatualizados. 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). Tratamento de Escritas Tratamento de Escritas • A técnica write through causa mais tráfego de barramento. • A técnica write 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. • Mais complexo de ser implementado. • 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 write back e fazer com que o programa expurgue todo o cache antes de uma operação de entrada/saída. Vantagens Write-back • As words individuais podem ser escritas pelo processador na velocidade em que a cache pode aceitar (e não a memória). • Diversas escritas dentro de um bloco exigem apenas uma escrita no nível inferior da hierarquia. • Quando blocos são escritor com write-back, o sistema pode fazer uso efetivo de uma transferência de alta largura de banda, já que o bloco inteiro é escrito. Considerações sobre a cache Total de bits necessário para uma cache varia de acordo com: 1. Qtde. de bits para end. da memória principal (32, 64 bits, etc..). 2. Qtde. de bits para end. dos bloco (pode ser de várias palavras): 𝑚 3. Quantidade de blocos: 𝑛 4. Qtde de bits para end. das linhas: 𝑙 Considerações sobre a cache Por exemplo, se considerarmos: 1. Endereço de 32 bits (Palavras alinhadas como múltiplos de 4 bytes). 2. Palavras por Bloco: 2𝑚. 3. Qtde. de Blocos: 2𝑛. 4. Qtde de bits para end. das linhas: 𝑙 Tag: Qtde. de bits para endereçamento – (n+m+ 𝑙) Tag: 32 – (n+m+2) Total de bits: 𝑄𝑡𝑑𝑒. 𝑑𝑒 𝐵𝑙𝑜𝑐𝑜𝑠 x (tamanho do bloco + tamanho da tag + tamanho do campo de validade) Total de bits: 2𝑛 x (tamanho do bloco + tamanho da tag + tamanho do campo de validade) = 2𝑛 x {(palavras por bloco x 32) + [32 – (n+m+2)] + 1} = 2𝑛 x [(palavras por bloco x 32) + (31 - n - m)] Considerações sobre a cache i. Divisão de bits do endereço ii. Aproveitamento efetivo ◦ Dados em cada linha: 8(2^3) palavras de 16 bits = 128 bits ◦ Tamanho total da linha: 1(validade) + 11(tag) + 128(bloco) = 140 bits ◦ Aproveitamento = 128 * 100% / 140 = 91,42% Considerações sobre a cache Total de bits necessário para uma cache varia de acordo com: 1. Tamanho do endereçamento da memória principal (32, 64 bits, etc..). 2. Tamanho do bloco (pode ser de várias palavras). 3. Quantidade de blocos. Por exemplo, se considerarmos: 1. Endereço de 32 bits (Palavras alinhadas como múltiplos de 4 bytes). 2. Palavras por Bloco: 2𝑚. 3. Qtde. de Blocos: 2𝑛. Tag: 32 – (n+m+2) Total de bits: 2𝑛 x (tamanho do bloco + tamanho da tag + tamanho do campo de validade) = 2𝑛 x {(palavras por bloco x 32) + [32 – (n+m+2)] + 1} = 2𝑛 x [(palavras por bloco x 32) + (31 - n - m)] Exercício Quantos bits são necessários para uma cache diretamente mapeada com 16Kb de dados e blocos de 4 words, considerando um endereço de 32 bits? Exercício Quantos bits são necessários para endereçar uma cache diretamente mapeada com 16Kb de dados e blocos de 4 words, considerando um barramento de 32 bits? Resposta: Total de bits: 2𝑛 x (tamanho do bloco + tamanho da tag + tamanho do campo de validade) = 2𝑛 x {(palavras por bloco x 32) + [32 – (n+m+2) ]+ 1} Sabemos que 16Kb são 4K words = 212 words. Com um tamanho de bloco de 4 words (2𝑚=2), 2𝑛=10 blocos. Cada bloco possui 4 x 32, ou seja, 128 bits de dados mais uma tag, que é 32- 10 -2 bits, mais um bit de validade. Portanto, o tamanho da cache total é: 210 x {(4 * 32) + [32 - ( 10 + 2 +2)] – 1} = 210 x 147 = 147Kbits = 18,4 Kb Conclusões Vantagens do Mapeamento Direto: • Estratégia simples para agilizar buscas. • Procura simples (posição fixa). • Simplicidade / Velocidade Desvantagens do Mapeamento Direto: • Pode ter mau aproveitamento das posições da cache (dependendo dos endereços gerados) • Miss rate pode ser alto! • Usa parte da cache para controle (armazena tags e bit de validade). Esquemas de cache Mapeamento Direto: • Qualquer endereço de bloco na memória torna-se um único local no nível superior da hierarquia. E se posicionarmos um bloco em qualquer local na cache? Esquema de cache totalmente associativo Totalmente Associativa Para realizar o esquema associativo, precisamos: 1. Todas as entradas da cache precisam ser pesquisada, pois um bloco pode estar posicionado em qualquer uma delas. 2. Um comparador associado a cada entrada da cache. **Apenas viável para caches com pequenos números de blocos. Associativa por Conjunto Faixa intermediária de projetos entre o mapeamento direto e a cache totalmente associativa. 1. Existe um número fixo (ao menos 2) de locais onde cada bloco pode ser colocado. 2. Cada bloco da memória é mapeado para um conjunto único de cache. 1. Utiliza um campo índice. 3. Bloco pode ser colocado em qualquer elemento desse conjunto. Arquitetura e Organização de Computadores OBRIGADO PROF. T I AGO BOCK HOLT, M sc
Compartilhar