Arquitetura de Computadores Memória Cache e Tipos de Memória Anderson L. S. Moreira [email protected] © Copyright 2010, IFPE. Creative Commons BY-SA 3.0 license Latest update: 12 de Abr de 2011, Document sources, updates: http://dase.ifpe.edu.br/~alsm 1 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Agenda Introdução Cálculo de memória Impacto da cache no desempenho do sistema Gerenciamento da cache Mapeamento Exercícios 2 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Introdução Também conhecida como memória buffer, está localizada entre o processador e a memória principal; Objetivo aumentar a velocidade do ciclo de memória (busca de instruções) e com isso o desempenho global do computador; Melhores resultados só são realmente aproveitados se a velocidade da cache for de 5 a 10 vezes mais rápida que a principal (alguns sistemas no máximo a ordem é de 2,5 a 3 vezes). 3 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Introdução Os parâmetros empregados para medir o desempenho são: • Tempo de Acesso: é o período de tempo gasto decorrido desde o instante em que foi iniciada a operação de acesso até que a informação requerida (instrução ou dado) tenha sido efetivamente transferida. Pode ser chamado tempo de acesso para leitura ou simplesmente tempo de leitura. • Tempo de ciclo de memória: esse conceito é aplicável principalmente a memórias de acesso aleatório e compreende o tempo de acesso e o tempo adicional requerido antes que um segundo acesso possa ser iniciado. • Taxa de transferência: é a taxa na qual os dados podem ser transferidos de ou para a unidade de memória. 4 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Introdução Comparativo entre as memórias 5 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Introdução À medida que descemos na hierarquia, as relações a seguir são válidas: • O custo por bit diminui • A capacidade aumenta • O tempo de acesso aumenta • A frequência de acesso à memória pelo processador diminui 6 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Introdução A capacidade diz respeito à quantidade de informação que pode ser armazenada em uma memória; a unidade de medida mais comum é o byte, embora também possam ser usadas outras unidades como células (no caso da memória RAM e cache), setores (no caso de discos) e bits (no caso de registradores). As Unidades de medida mais usadas para quanti car a memória e indicar a capacidade de armazenamento são os múltiplos do byte: • 1MB (Megabyte) ≈1024KB = 1.048.576 bytes • 1GB (Gigabyte) ≈ 1024MB = 1.073.741.824 bytes • 1TB (Terabyte) ≈ 1024GB = 1.099.511.627.776 byte s 7 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Métodos de Acesso • Acesso seqüencial: aquele em que conjuntos de dados e informações dispostos seqüencialmente na memória em unidades denominadas “registros” são acessados linearmente, um após o outro. O acesso seqüencial é tipicamente usado em dispositivos de armazenamento que utilizam meio magnético. Em toda memória que admite acesso seqüencial existe um o mecanismo de leitura (geralmente também usado para a escrita) que percorre a memória linearmente, passando seqüencialmente de registro em registro, identi cando cada um deles, até localizar o registro que se deseja consultar ou alterar. • Acesso direto: é feito em dois passos. O primeiro é um acesso aleatório a uma vizinhança genérica do bloco de bytes a ser lido (geralmente, um setor). O segundo é um acesso seqüencial (em geral por contagem de blocos) até identificar aquele que deve ser lido. 8 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Métodos de Acesso • Acesso aleatório: significa que qualquer posição de memória principal, ou unidade endereçável, pode ser acessada diretamente, selecionada por seu endereço, seja ele qual for. O acesso independe da ordem, da posição relativa ou de qualquer outro fator. Dessa maneira, qualquer posição pode ser selecionada de modo aleatório, sendo endereçada e acessada diretamente. A memória principal e alguns sistemas de memória cache utilizam esse tipo de acesso. • Acesso associativo: consiste em um tipo de acesso aleatório que possibilita comparar simultaneamente certo número de bits de uma palavra com todas as palavras da memória, determinando quais dessas palavras contêm o mesmo padrão de bits. Uma palavra é buscada na memória com base em uma parte do seu conteúdo, e não de acordo com o seu endereço. Assim como no aleatório, cada posição da memória possui seu mecanismo de endereçamento próprio e o tempo de busca é constante e independente da posição ou do padrão dos acessos anteriores. As memórias cache podem empregar acesso associativo. 9 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Cálculo de Memória Memória armazena grande número de bits m × n memory … m words 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 : n bits per word 32,768 bits 12 sinais de endereços 8 sinais de dados (input/output) memory external view r/w 2 k × n read and write memory enable A0 … Ak-1 … Q n-1 Q0 10 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Introdução Todo o controle e gerenciamento é realizado por hardware; Processador não tem conhecimento da presença da memória cache durante o acessos à memória; Eventualmente a memória cache precisa ser esvaziada ou marcada como inválida, nesse caso a cache é controlada por software; Não tem conflito com a memória virtual. Controle e gerencia da cache Memória principal processador cache 11 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Introdução A memória cache é encontrada em dois tipos: • Memória cache L1 - Presente dentro do microprocessador ou cache interno. É dividida em duas partes, uma para dados outra para instruções. • Memória cache L2 - Presente na placa-mãe ou até dentro do processador, no caso de processadores mais novos. Quando é externo, o seu tamanho depende do chipset presente na placamãe. 12 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Introdução 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%. 13 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Introdução HIT – dados encontrados no nível procurado; MISS – dados não encontrados no nível procurado; HIT-rate – percentual de hits no nível; MISS-rate – percentual de perdas no nível; HIT-Time – tempo de acesso no nível incluindo tempo de ver se é hit ou miss; MISS-Penality – tempo médio gasto para que o dado não encontrado no nível seja transferido dos níveis mais baixos Time = hit-time + (1 – hit-rate) * miss-penality 14 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Introdução Exercício: Calcule o tempo médio efetivo de acesso a uma memória cache considerando miss-rate = 20%, hittime = 2um e miss-penality = 10um? 15 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Impacto da cache no desempenho do sistema (1) Principais parametros Tamanho total da cache Número total de bytes de dado da cache Tags, bits de validade e outros bits de controle Grau de Associatividade Tamanho do Bloco 16 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Impacto da cache no desempenho do sistema (2) 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) 17 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Introdução 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 Frequência de acesso Espaço de endereçamento 18 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Gerenciamento da cache Usar uma estratégia de substituição dos blocos; Também contar com uma técnica para realizar o mapeamento de blocos da memória principal para a cache; O gerenciador da cache deve controlar todas as operações de leitura e escrita de memória Se o bloco ao qual a palavra pertence está presente ou não na cache 19 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Gerenciamento da cache (1) Nas operações de leitura e escrita o gerenciador pode proceder da seguinte forma: Bloco presente na cache; Operação de leitura (read) → cache é lida e o conteúdo entregue ao processador; Operação de escrita (write) → o gerenciador usa uma de suas estratégias possíveis; A memória principal e a cache são atualizadas simultaneamente (store-through ou write-through) A cache é atualizada – nesse caso a cache é marcada como alterada (dirty) e posteriormente quando precisar ser substituída, as palavras marcadas serão atualizadas na memória principal (write-back) 20 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Gerenciamento da cache (2) Bloco ausente na cache Operação de leitura (read): todo o bloco contendo a palavra desejada é lido da memória principal e o conteúdo do endereço solicitado é entregue ao processador. Duas estratégias: Tão logo a palavra desejada esteja disponível ela é entregue ao processador (load-through); O processador recebe a palavra só após a cache ser totalmente atualizada com o novo bloco. Operação de escrita (write): geralmente a memória principal é atualizada diretamente sem que o bloco seja trazido para a cache; 21 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Mapeamento Assemelha-se no gerenciamento da memória virtual já que exige um mapeamento entre a memória principal e a posição da cache; Tipos de mapeamento da cache: Mapeamento direto; Mapeamento associativo; Mapeamento bloco associativo. Obedece a seguinte regra: cache dividida em blocos de V palavras memóriacachepodetermblocos Cc ,sendoC c =capacidadedearmazenamento v memóriaprincipalkblocos Cp k= ,sendoC p =capacidadetotal,comk>m v m= 22 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Mapeamento Direto (1) bloco 0 bloco 1 tag bloco 0 bloco m-1 tag bloco m bloco m+1 bloco 1 m blocos tag bloco 2m-1 bloco 2m bloco m-1 bloco k-2 endereço de memória t bits tag b bits bloco w bits palavra bloco k-1 memória k blocos 23 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Mapeamento Direto (2) É simples mas pouco flexível; Endereço de memória gerado pelo processador como composto por 3 campos; O algoritmo é trivial; Um bloco sempre é colocado naquela posição fixa à qual está destinado; O bloco antigo que ocupava tal posição é perdido. 24 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Mapeamento Direto – Gerenciamento (1) Quando um bloco passa da principal para a cache, o campo bloco do endereço é usado para achar a posição do bloco na cache e os bits de tag do endereço são armazenados no campo tag associado aquela posição na cache; Fica identificado qual dos 2t possíveis blocos de memória principal que podem ser mapeados naquela posição, está efetivamente ocupando aquela posição na cache; Quando o processador gera um endereço, a cache e acessada da seguinte forma: O campo bloco do endereço é usado para achar a posição do bloco na cache; O campo tag daquele bloco na cache é comparado com o campo de tag no endereço; 25 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Mapeamento Direto – Gerenciamento (2) Se os campos tag forem iguais o bloco desejado está presente na cache e a palavra é acessada através dos w bits de deslocamento do campo palavra; Se os campos tag não forem iguais, o bloco desejado não está presente na cache e deve ser acessado na memória principal; O acesso a palavra na memória principal é feito obviamente, usando todos os bits do endereço (t+b+w). 26 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Mapeamento Associativo (1) Problema do mapeamento direto → substituição dos blocos na cache, que pode ocorrer mesmo estando a cache parcialmente vazia; Solução → qualquer bloco da memória principal ocupe qualquer posição de bloco na cache; Substituição só ocorre se tiver completamente ocupada; Como qualquer bloco pode ocupar qualquer posição na cache, o tag associado ao bloco deve ter todas as informações do bloco naquela posição; Forma de determinar a posição → pesquisar a memória e comparar tags (pode ser demorada); Solução → usar memória associativa de m-caminhos (m-way), onde m é o número de blocos na cache. 27 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Mapeamento Associativo (2) bloco 0 tag bloco 0 tag bloco i bloco 1 m blocos tag bloco m-1 endereço de memória t bits tag w bits palavra bloco k memória k blocos 28 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Mapeamento Grupo Associativo (1) Aproveita vantagens das duas técnicas; A memória cache é dividida em grupos (conjuntos) Cada conjunto podendo alojar n blocos simultaneamente. n blocos que o grupo pode alojar são sempre os mesmos blocos pré-definidos na memória principal (mapeamento direto); Diferença → Dentro do grupo o bloco pode ocupar qualquer posição; Cada bloco j da memória principal pode ser alocado para qualquer n blocos de um dado grupo i 29 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Mapeamento Grupo Associativo (2) Quando um bloco é trazido da MP para a cache, um campo é usado para achar a posição do grupo na cache: Localizado o grupo e tendo posição livre, a primeira livre encontrada é ocupada; Não havendo posição livre, um dos blocos que ocupam o grupo na cache será substituído, usando uma dada estratégia de substituição; Determinada a posição que o novo bloco vai ocupar, os bits de tag de endereço é associado a tag do grupo. 30 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Mapeamento Grupo Associativo (3) Quando o processador gera um endereço, a cache é acessada da seguinte forma: Um campo conjunto do endereço é usado para achar a posição do grupo na cache; Os campos tag de todos os blocos daquele grupo na cache são comparados associativamente com o campo de tag do endereço; Se a comparação for bem sucedida, o bloco desejado está presente na cache sua posição é identificada e a palavra é acessada através dos bits de deslocamento; Se não for, o bloco desejado não está presente na cache e deve ser acessado na memória principal. 31 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Sumário e pontos importantes (1) Memória Física: Dinâmica (DRAM) → necessita de refresh periódico para não perder as informações enquanto acionadas (8 a 32 ms); Estática (SRAM) → retém as informações mesmo enquanto não estão acionadas; RAM perde informações nela armazenadas quando desligadas, caso necessite que as informações armazenadas continuem nela usa-se a ROM; Variações PROM, EPROM, EEPROM, flash ROM. Memória cache: Possuem níveis, quanto mais afastada do processador maior o nível (tipicamente tem dois níveis); Velocidade típica de 5 a 10 ns; 32 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Sumário e pontos importantes (2) A Memória Principal não é o único dispositivo de armazenamento de um computador. Em função de características como tempo de acesso, capacidade de armazenamento, custo, etc., podemos estabelecer uma hierarquia de dispositivos de armazenamento em computadores. 33 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Sumário e pontos importantes (3) Volatilidade → memórias podem ser do tipo volátil ou não volátil. Memória não volátil é a que retém a informação armazenada quando a energia elétrica é desligada. Memória volátil é aquela que perde a informação armazenada quando a energia elétrica desaparece (interrupção de energia elétrica ou desligamento da chave ON/OFF do equipamento). 34 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Sumário e pontos importantes (4) 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, seqüencialmente, 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%. 35 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Storage permanence Sumário e pontos importantes (5) Life of product Tens of years Battery life (10 years) Mask-programmed ROM Ideal memory OTP ROM EPROM EEPROM FLASH NVRAM Nonvolatile In-system programmable SRAM/DRAM Near zero Write ability During External External External External fabrication programmer, programmer, programmer programmer only one time only 1,000s OR in-system, OR in-system, 1,000s block-oriented of cycles writes, 1,000s of cycles of cycles In-system, fast writes, unlimited cycles Write ability and storage permanence of memories, showing relative degrees along each axis (not to scale). 36 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Exercícios Procure na literatura especializada informações sobre: Burst Mode Cache; Synchronous Burst SRAM; Pipelined Burst SRAM 37 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm Bibliografia Arquitetura de Computadores Pessoais, Raul Weber, 2ª edição; Arquitetura de Computadores, Andrew S. Tannembaum, 8ª edição; Fundamentos de Arquitetura de Computadores, Saib e Weber, 4ª edição; 38 Anderson Moreira. [email protected], Arquitetura de Computadores. http//dase.ifpe.edu.br/~alsm