Universidade Federal de Juiz de Fora – UFJF Departamento de Ciência da Computação – DCC Disciplina: Organização de Computadores Aluna: Cintia Carvalho Oliveira - 20022209 Relatório do Seminário sobre Memória Interna Foram apresentadas durante o seminário os seguintes tópicos: 1 2 3 4 Visão geral Memória Principal de semicondutor Memória Cache Organização das memórias cachê 1 . Visão Geral Características das memórias :Capacidade, Transferência, Acesso e Desempenho A Capacidade é expressa em bytes ou palavras. Palavras usuais: 8, 16 e 32 bits A transferência é igual ao número de linhas de dados do módulo de memória. Palavra Unidade Endereçável - palavra Unidade de Transferência – conjunto de bits lidos ou escritos de cada vez. Os acessos podem ser feitos das seguintes maneiras: Sequencial – como em uma fita Direto – endereço baseado na sua localização física Aleatório – posição com identificado único Associativo – palavra buscada de acordo com seu conteúdo não com o endereço. As medições podem ser efetuadas das seguintes maneiras: Tempo de Acesso • Gasto para efetuar leitura ou escrita Tempo de Ciclo de Memória • Acesso aleatório – tempo de acesso e um adicional antes que um segundo acesso seja feito Podemos calcular a taxa de Transferência do modo abaixo: Tn = Ta + N/R Tn = tempo médio para ler ou escrever N bits N = número de bits R = taxa de transferência em bps A hierarquia de memória Registradores Memória Cache Memória Principal Memória Interna Armazenamento externo Disco Magnético CD-ROM DVD + RW DVD -RAM Armazenamento de Segurança Fita Magnética MO WORM figura 1.1 – Pirâmide demonstrando a hierarquia das memórias Por mais capacidade, sempre será ocupada! Tempo de Acesso mais rápido, custo por bit maior Capacidade maior, custo por bit menor Capacidade maior, tempo de acesso menor Consideramdo a hierarquia anterior observamos que: O custo por bit diminui A capacidade aumenta O tempo de acesso aumenta A frequêcia de acesso ao processador diminui Cálculo do tempo médio para acessar uma palavra: Suponhamos 95% dos acessos à memória na cache: (0,95) (0,1 ns) + (0,05) (0,1 ns + 1 ns) = 0,095,+ 0,055 = 0,15ns Estamos considerando para os cálculos acima os dados acima: O nível 1 contém 1000 palavras e 0,1ns de acesso Nível 2, 100 mil palavras, 1 ns de acesso Quando a informação procurada está no nível 1 o processador acessa diretamente a memória. Mas quando ocorre da informação não for localizada no nível 1 ela é buscada no nível 2 e depois passa para o nível 1 para depois ser acessada pelo processador. Tipos de Memórias A memória Flash, é menor e mais cara, constituída de registradores. Na Memória principal, cada posição possui um endereço único. Normalmente é combinada com uma memória cache menor e de maior velocidade. Estes três tipos são voláteis e utilizam tecnologia de semicondutores. Tipo de Memória Categoria Mecanismo Apagar Mecanismo Escrita Volatilidade RAM Leitura Escrita Eletricamente a Eletricamente nível bytes Sim ROM Leitura Não é possível Máscaras Não PROM Leitura Não é possível Eletricamente Não EPROM Principal Leitura Luz Ultra Eletricamente Violeta, pastilha Não Flash Principal Leitura Eletricamente a Eletricamente nível de Bloco Não EEPROM Principal Leitura Eletricamente a Eletricamente nível de bytes Não Tabela 1.1 – Tabela esquematizando as características das memórias internas 2. Memória principal de semicondutor Memória RAM Memória de Acesso Aleatório : Dados podem ser lidos e escritos rapidamente e com facilidade. É uma memória volátil. Memória RAM Dinâmica: – Armazena com capacitores – Regeneração para manter dados Memória RAM Estática: – Flip-flops com portas lógicas A memória RAM dinâmica é mais densa (mais células) e mais barata do que a memória RAM estática, Memória ROM Memória Apenas de Leitura, usada para – Bibliotecas de sub-rotinas frequentemente utilizadas – Programas de sistemas – Tabelas de funções Outros tipos derivados da tecnologia da memória ROM ROM Programável - PROM ROM Programável e Apagável – EPROM EEPROM – apenas de leitura programável e apagável eletricamente 3. Memória Cache Figura 1.2 – Esquema de comunicação entre o processador, a cache e a memória principal Na memória principal temos 2n palavras endereçáveis, sendo n o número de bits por palavra. Sendo blocos com K palavras a memória principal tem M = 2n/K blocos A Cache tem C linhas de K palavras, sendo que C<<M, então cada linha com um bloco da memória principal. Operação de leitura na Cache O endereço buscado da palavra está na cache? Não Localiza na Memória Principal o bloco que Contém o endereço Coloca o bloco em uma linha da Cache Sim Obtém o conteúdo da palavra do endereço e entrega para a CPU Carrega o bloco da Memória Principal para a Cache Entrega a palavra para a CPU Fim Organização Típica da Cache Moderna Tamanho da Memória Cache O Tamanho da memória Cache deve ser pequeno para que o custo por bit seja próximo ao da memória principal. Mas também grande para que o tempo médio de acesso à memória seja próximo ao da memória cache. Com memórias muito grandes são mais lentas, com mais portas envolvidas. Estudos mostram que memórias entre 1K a 512 K são mais eficazes. Funções de mapeamento As Funções de mapeamento podem ser vistas com melhores detalhes no capítulo 4, não sendo então objetivo entrar em detalhes neste resumo. O qual traria somente mais imagens do capítulo em questão. Algoritmo para mapear memória principal em linhas da Cache e onde cada bloco fica nela A Cache pode ser mapeado por 3 funções diferentes: – Mapeamento Direto – Mapeamento Associativo – Mapeamento Associativo por Conjunto Mapeamento Direto Utiliza-se esta função: i = j módulo m i = número da linha da Memória Cache j = número bloco da memória principal m = número de linhas na memória Cache Mapeamento Associativo Um rótulo (22 bits mais significativos) identificam um bloco na memória principal de modo unívoco. Para verificar se o bloco está na memória cache os rótulos são comparados. Endereço memória 0001 0110 0011 0011 1001 1100 (bin) 1 6 3 3 9 C (hex) Rótulo 00 0101 1000 1100 1110 0111 (bin) 0 5 8 C E 7 (hex) Mapeamento associativo por Conjunto Combina as vantagens das anteriores e minimiza seus problemas. A Cache é dividida em v conjuntos com k linhas. – Com as relações: m=vxk i = j módulo v i = número do conjunto na memória cache j = número do bloco da memória principal m = número de linhas da memória cache Algoritmos de Substituição No Direto cada bloco é mapeado em uma linha, o que determina o bloco a ser substituido, não há alternativa Nos associativos uso de algoritmos de substituição, implementados em hardware. Mais eficaz LRU – least recently used. Bit de USO FIFO – first in first out LFU – least frequently used – contador de frequência Aleatoriamente Este possui desempenho levemente inferior ao seu antecessor. Políticas de Atualização Se ocorrer uma escrita na cache nos demais locais onde a informação anterior estava devem ser invalidadas (na memória principal, em outras caches) Técnicas de Atualização; – Escrita Direta (write-through) : Diretamente x Muito tráfego – Escrita de Volta (write-back) : bit de Atualização x E/S direto na Cache Na Direta outras caches ficam desatualizadas: – Transparência em hardware : hardware adicional que atualiza as caches. Tamanho da Linha Com um aumento do tamanho da linha ocorre um crescimento da taxa de acerto: princípio de localidade de referências. Ruim se ficar tão grande que a probabilidade de os dados buscados serem utilizados é menor que utilizar os dados que foram substituídos Número de Memória Cache Antes, uma única cache Com a densidade dos circuitos integrados – integrando na pastilha do processado – L1 – reduzindo o uso de barramento Outra fora da pastilha, L2, para comunicação mais eficiente de L1 com Memória Principal, para evitar possível falha na L1. Divisão entre cache de dados e cache de instruções – Verificou-se que a taxa de acerto de uma unificada é maior! (balanceamento entre buscas de dados e de instruções)