Baixe o app para aproveitar ainda mais
Prévia do material em texto
IntroduçãoIntrodução àà InformáticaInformática Alexandre Alexandre MeslinMeslin ((meslinmeslin@@ncence.ufrj..ufrj.brbr)) Organização da MemóriaOrganização da Memória zz Conceito de hierarquia de memóriaConceito de hierarquia de memória zz MemMemóória principal e memria principal e memóórias secundrias secundááriasrias zz Projeto lógico da memória principalProjeto lógico da memória principal zz MemMemóórias rias cachecache zz MemMemóória virtualria virtual Conceito de Hierarquia de Conceito de Hierarquia de MemóriaMemória zz Memória no computadorMemória no computador RegistradoresRegistradores Memória principalMemória principal Memória Memória cachecache Memória ROMMemória ROM Discos magnéticosDiscos magnéticos Discos ópticosDiscos ópticos Fitas magnéticasFitas magnéticas RegistradoresRegistradores zz É a memória mais rápidaÉ a memória mais rápida zz Montada dentro da CPUMontada dentro da CPU zz Local onde as operações aritméticas são Local onde as operações aritméticas são calculadascalculadas zz Conjuntos de apenas algumas dezenasConjuntos de apenas algumas dezenas Memória PrincipalMemória Principal zz Construída utilizando memória dinâmicaConstruída utilizando memória dinâmica zz Memória de leitura e escritaMemória de leitura e escrita zz DRAMDRAM zz Mais lenta e mais barata que a memória Mais lenta e mais barata que a memória cachecache zz Computadores atuais possuem pelo menos 64 Computadores atuais possuem pelo menos 64 megabytesmegabytes zz Tempo de acesso unitário de 60 ns e em modo Tempo de acesso unitário de 60 ns e em modo rajada de 7 nsrajada de 7 ns zz O seu conteúdo é perdido quando a energia é O seu conteúdo é perdido quando a energia é desligadadesligada ProblemasProblemas zz Configuração de hardwareConfiguração de hardware Processador de 1 GHzProcessador de 1 GHz Unidade aritmética de 32 bits (4 bytes)Unidade aritmética de 32 bits (4 bytes) Tempo de acesso à memória:Tempo de acesso à memória: Unitário: 60 nsUnitário: 60 ns Rajada: 7 ns (Rajada: 7 ns (PC133PC133)) zz Processador necessita de dados a cada 1 nsProcessador necessita de dados a cada 1 ns Período é o inverso da freqüênciaPeríodo é o inverso da freqüência 1 ns = 1/1 GHz1 ns = 1/1 GHz ValoresValores zz Memória de 8 bitsMemória de 8 bits 4 acessos necessários4 acessos necessários 1o acesso em 60 ns1o acesso em 60 ns 2o, 3o e 4o acesso a cada 7 ns2o, 3o e 4o acesso a cada 7 ns Tempo total = 60 + 3*7 = 81 nsTempo total = 60 + 3*7 = 81 ns Memória 80 vezes mais lenta que o processadorMemória 80 vezes mais lenta que o processador CPUCPU MemóriaMemória barramentobarramento de dadosde dados 8 bits8 bits ValoresValores zz Memória de 16 bitsMemória de 16 bits 2 acessos necessários2 acessos necessários 1o acesso em 60 ns1o acesso em 60 ns 2o acesso em 7 ns2o acesso em 7 ns Tempo total = 60 + 7 = 67 nsTempo total = 60 + 7 = 67 ns Memória 67 vezes mais lenta que o processadorMemória 67 vezes mais lenta que o processador CPUCPU MemóriaMemória barramentobarramento de dadosde dados 16 bits16 bits ValoresValores zz Memória de 32 bitsMemória de 32 bits 1 único acesso1 único acesso acesso em 60 nsacesso em 60 ns Tempo total = 60 nsTempo total = 60 ns Memória 60 vezes mais lenta que o processadorMemória 60 vezes mais lenta que o processador CPUCPU MemóriaMemória barramentobarramento de dadosde dados 32 bits32 bits Memória Memória CacheCache zz Construída utilizando memória estáticaConstruída utilizando memória estática zz Memória de leitura e escritaMemória de leitura e escrita zz SRAMSRAM zz Extremamente rápidaExtremamente rápida zz Pouca capacidadePouca capacidade zz Opera em velocidade perto da velocidade do Opera em velocidade perto da velocidade do processadorprocessador Igual ou metadeIgual ou metade zz Memória de acesso aleatórioMemória de acesso aleatório Memória Memória CacheCache zz Nível 1 Nível 1 ÆÆ construconstruíída junto ao processadorda junto ao processador zz NNíível 2 vel 2 ÆÆ fora do processador (na placa mfora do processador (na placa mããe)e) zz A maior parte dos PC’s contém:A maior parte dos PC’s contém: Alguns Alguns quilobytesquilobytes de nível 1de nível 1 Poucos megabytes de nível 2Poucos megabytes de nível 2 zz O tempo de acesso é menor do que 6nsO tempo de acesso é menor do que 6ns zz Memória muito caraMemória muito cara zz O seu conteúdo é perdido quando a energia é O seu conteúdo é perdido quando a energia é desligadadesligada Termos ComunsTermos Comuns zz Referências pelo processador a dados Referências pelo processador a dados armazenados em armazenados em cachecache são chamados de são chamados de ACERTO (HIT)ACERTO (HIT) TaxaTaxa dede acerto normalmente maior queacerto normalmente maior que 95%95% zz Referências pelo processador a dados não Referências pelo processador a dados não armazenados em armazenados em cachecache são chamados de são chamados de FALHA (MISS)FALHA (MISS) zz CacheCache normalmente busca uma linhanormalmente busca uma linha Localidade espacialLocalidade espacial zz DescritorDescritor (tag)(tag) Dados,Dados, endereçosendereços,, validadevalidade, etc., etc. FuncionamentoFuncionamento zz Tentativa de aproximar o tempo de acesso à Tentativa de aproximar o tempo de acesso à memória do tempo de acesso da CPUmemória do tempo de acesso da CPU zz Dependente de diversos fatoresDependente de diversos fatores Arquitetura do computadorArquitetura do computador Comportamento dos programasComportamento dos programas Tamanho e organização da Tamanho e organização da cachecache zz Transparente paraTransparente para oo programaprograma//programadorprogramador FuncionamentoFuncionamento zz PedidoPedido dede memória verificadomemória verificado antesantes nana cachecache SeSe estiver presenteestiver presente, a cache, a cache fornecefornece//recebe recebe informação dainformação da CPU (CPU (acerto ouacerto ou hit)hit) Caso contrárioCaso contrário, o, o pedidopedido éé enviado paraenviado para aa memóriamemória principal (principal (falha oufalha ou miss)miss) CPUCPU MMUMMU CacheCache MemóriaMemóriaPrincipalPrincipal EVEV EFEF EFEF DD ouou II DD ouou II Princípios da Princípios da CacheCache zz Localidade espacialLocalidade espacial Grande probabilidade de acessos à locais vizinhosGrande probabilidade de acessos à locais vizinhos zz Localidade temporalLocalidade temporal GrandeGrande probabilidadeprobabilidade de sede se acessar regiões que foram acessar regiões que foram recentemente acessadasrecentemente acessadas zz SeqüencialidadeSeqüencialidade Se uma referência é feita ao endereço X, existe grande Se uma referência é feita ao endereço X, existe grande probabilidade de haver referência ao endereço X+1probabilidade de haver referência ao endereço X+1 MemóriaMemória CacheCache DadosDados TagsTags BlocoBloco ((linhalinha) ) de dadosde dados EndereçoEndereço ValidadeValidade EstadoEstado Etc.Etc. Organização do Organização do CacheCache zz Mapeamento diretoMapeamento direto Direct mappedDirect mapped zz Conjunto associativoConjunto associativo Set Set associativeassociative zz Totalmente associativoTotalmente associativo Fully associativeFully associative CuriosidadesCuriosidades zz Supondo memória Supondo memória cache com:cache com: 256 256 kbyteskbytes 32 bytes/32 bytes/blocobloco 88 linhaslinhas Barramento Barramento de de endereço endereço de 32 bitsde 32 bits CapacidadeCapacidade dede endereçar atéendereçar até 44 GbytesGbytes Mapeamento diretoMapeamento direto Cache comCache com Mapeamento Mapeamento DiretoDireto zz CuriosidadesCuriosidades Os bytes 0, 1, 2Os bytes 0, 1, 2 atéaté o byte 31o byte 31 estão na primeira linha estão na primeira linha dada cachecache Os bytes 32, 33, 34Os bytes 32, 33, 34 atéaté o byte 63o byte 63 estão na segunda estão na segunda linha dalinha da cachecache Os bytes 64, 65, 66Os bytes 64, 65, 66 atéatéo byte 95 o byte 95 estão na terceira estão na terceira linha dalinha da cachecache Os bytes 96, 97, 98 Os bytes 96, 97, 98 atéaté o byte 127 o byte 127 estão na quarta estão na quarta linha dalinha da cachecache Cache comCache com Mapeamento Mapeamento DiretoDireto zz Convertendo os números para binárioConvertendo os números para binário,, observaobserva-- se:se: Os 5 bitsOs 5 bits menos significativosmenos significativos dosdos elementos que elementos que pertencempertencem àà mesma linha são diferentesmesma linha são diferentes OsOs outrosoutros bitsbits são todos iguaissão todos iguais. . Cache comCache com Mapeamento Mapeamento DiretoDireto zz Como o cache tem 256Como o cache tem 256 kbytes endereçoskbytes endereços,, convertendo para binárioconvertendo para binário,, isto representaisto representa umum númeronúmero de 18 bitsde 18 bits zz 221818 = = 262144262144 = 256= 256 kbyteskbytes CacheCache com Mapeamento com Mapeamento DiretoDireto zz Assumindo queAssumindo que:: MemóriaMemória cache tem 2cache tem 2kk linhaslinhas MemóriaMemória cache temcache tem blocobloco com 2com 2mm bytesbytes p bits dep bits de barramentobarramento de de endereçoendereço zz Bits mais baixos utilizados para selecionar a linha da Bits mais baixos utilizados para selecionar a linha da cachecache zz Bits mais altos usados para comparar o endereço da linhaBits mais altos usados para comparar o endereço da linha p-k-m mk p bits tag Endereço da linha do cache Endereço do byte Cache comCache com Mapeamento Mapeamento DiretoDireto p-k-m mk tag Endereço do cache Endereço do byte tagdado H it? memória p-k-mb Linha de cache 2k linhas CPU ExemploExemplo zz Supondo memória Supondo memória cache com:cache com: 256 256 kbyteskbytes 32 bytes/32 bytes/blocobloco 8 k8 k linhaslinhas Barramento Barramento de de endereço endereço de 32 bitsde 32 bits Mapeamento diretoMapeamento direto zz Calcular Calcular o o bloco que será utilizado pelo bloco que será utilizado pelo endereçoendereço:: 87a6c1b4 (hexadecimal)87a6c1b4 (hexadecimal) ExemploExemplo zz p = 32 bitsp = 32 bits zz m = 5 bits (2m = 5 bits (255 = 32)= 32) zz k = 13 bits (2k = 13 bits (21313=8 k)=8 k) zz 8 7 a 6 c 1 b 48 7 a 6 c 1 b 4 1000 0111 1010 0110 1100 0001 1011 01001000 0111 1010 0110 1100 0001 1011 0100 p-k-m mk p bits tag Endereço da linha do cache Endereço do byte ExemploExemplo zz p = 32 bitsp = 32 bits zz m = 5 bits (2m = 5 bits (255 = 32)= 32) zz k = 13 bits (2k = 13 bits (21313=8 k)=8 k) zz 8 7 a 6 c 1 b 48 7 a 6 c 1 b 4 1000 0111 1010 0110 1100 0001 101101001000 0111 1010 0110 1100 0001 10110100 p-k-m mk p bits tag Endereço da linha do cache Endereço do byte ExemploExemplo zz p = 32 bitsp = 32 bits zz m = 5 bits (2m = 5 bits (255 = 32)= 32) zz k = 13 bits (2k = 13 bits (21313=8 k)=8 k) zz 8 7 a 6 c 1 b 48 7 a 6 c 1 b 4 1000 0111 1010 0110 1100 0001101101001000 0111 1010 0110 1100 000110110100 p-k-m mk p bits tag Endereço da linha do cache Endereço do byte ExemploExemplo zz p = 32 bitsp = 32 bits zz m = 5 bits (2m = 5 bits (255 = 32)= 32) zz k = 13 bits (2k = 13 bits (21313=8 k)=8 k) zz 8 7 a 6 c 1 b 48 7 a 6 c 1 b 4 1000 0111 1010 0110 11000001101101001000 0111 1010 0110 1100000110110100 p-k-m mk p bits tag Endereço da linha do cache Endereço do byte ExemploExemplo zz p = 32 bitsp = 32 bits zz m = 5 bits (2m = 5 bits (255 = 32)= 32) zz k = 13 bits (2k = 13 bits (21313=8 k)=8 k) zz 8 7 a 6 c 1 b 48 7 a 6 c 1 b 4 1000 0111 1010 011011000001101101001000 0111 1010 01101100000110110100 p-k-m mk p bits tag Endereço da linha do cache Endereço do byte ExemploExemplo zz p = 32 bitsp = 32 bits zz m = 5 bits (2m = 5 bits (255 = 32)= 32) zz k = 13 bits (2k = 13 bits (21313=8 k)=8 k) zz 8 7 a 6 c 1 b 48 7 a 6 c 1 b 4 1000 0111 1010011011000001101101001000 0111 101001101100000110110100 p-k-m mk p bits tag Endereço da linha do cache Endereço do byte ExemploExemplo zz p = 32 bitsp = 32 bits zz m = 5 bits (2m = 5 bits (255 = 32)= 32) zz k = 13 bits (2k = 13 bits (21313=8 k)=8 k) zz 8 7 a 6 c 1 b 48 7 a 6 c 1 b 4 1000 01111010011011000001101101001000 0111101001101100000110110100 p-k-m mk p bits tag Endereço da linha do cache Endereço do byte ExemploExemplo zz p = 32 bitsp = 32 bits zz m = 5 bits (2m = 5 bits (255 = 32)= 32) zz k = 13 bits (2k = 13 bits (21313=8 k)=8 k) zz 8 7 a 6 c 1 b 48 7 a 6 c 1 b 4 1000011110100110110000011011010010000111101001101100000110110100 p-k-m mk p bits tag Endereço da linha do cache Endereço do byte ExemploExemplo zz p = 32 bitsp = 32 bits zz m = 5 bits (2m = 5 bits (255 = 32)= 32) zz k = 13 bits (2k = 13 bits (21313=8 k)=8 k) zz 87a6c1b487a6c1b4 1000011110100110110000011011010010000111101001101100000110110100 p-k-m mk p bits tag Endereço da linha do cache Endereço do byte ExemploExemplo zz p = 32 bitsp = 32 bits zz m = 5 bits (2m = 5 bits (255 = 32)= 32) zz k = 13 bits (2k = 13 bits (21313=8 k)=8 k) zz 87a6c1b487a6c1b4 100001111010011011000001101 10100100001111010011011000001101 10100 p-k-m mk p bits tag Endereço da linha do cache Endereço do byte ExemploExemplo zz p = 32 bitsp = 32 bits zz m = 5 bits (2m = 5 bits (255 = 32)= 32) zz k = 13 bits (2k = 13 bits (21313=8 k)=8 k) zz 87a6c1b487a6c1b4 10000111101001 1011000001101 1010010000111101001 1011000001101 10100 k = 1011000001100k = 1011000001100 p-k-m mk p bits tag Endereço da linha do cache Endereço do byte ExemploExemplo zz Bloco endereçadoBloco endereçado porpor 87a6c1b4 (hexadecimal)87a6c1b4 (hexadecimal) zz Linha Linha de cache 1011000001100 (de cache 1011000001100 (bináriobinário)) 160C (hexadecimal)160C (hexadecimal) 5644 (decimal)5644 (decimal) ProblemaProblema zz Refazer Refazer o o problema para problema para o o endereçoendereço 8888a6c1b4 (hexadecimal)a6c1b4 (hexadecimal) ProblemaProblema zz p = 32 bitsp = 32 bits zz m = 5 bits (2m = 5 bits (255 = 32)= 32) zz k = 13 bits (2k = 13 bits (21313=8 k)=8 k) zz 8 8 a 6 c 1 b 48 8 a 6 c 1 b 4 1000 1000 1010 0110 1100 0001 1011 01001000 1000 1010 0110 1100 0001 1011 0100 p-k-m mk p bits tag Endereço da linha do cache Endereço do byte ProblemaProblema zz p = 32 bitsp = 32 bits zz m = 5 bits (2m = 5 bits (255 = 32)= 32) zz k = 13 bits (2k = 13 bits (21313=8 k)=8 k) zz 8 8 a 6 c 1 b 48 8 a 6 c 1 b 4 1000 1000 1010 0110 1100 0001 101101001000 1000 1010 0110 1100 0001 10110100 p-k-m mk p bits tag Endereço da linha do cache Endereço do byte ProblemaProblema zz p = 32 bitsp = 32 bits zz m = 5 bits (2m = 5 bits (255 = 32)= 32) zz k = 13 bits (2k = 13 bits (21313=8 k)=8 k) zz 8 8 a 6 c 1 b 48 8 a 6 c 1 b 4 1000 1000 1010 0110 1100 0001101101001000 1000 1010 0110 1100 000110110100 p-k-m mk p bits tag Endereço da linha do cache Endereço do byte ProblemaProblema zz p = 32 bitsp = 32 bits zz m = 5 bits (2m = 5 bits (255 = 32)= 32) zz k = 13 bits (2k = 13 bits (21313=8 k)=8 k) zz 8 8 a 6 c 1 b 48 8 a 6 c 1 b 4 1000 1000 1010 0110 11000001101101001000 1000 1010 0110 1100000110110100 p-k-m mk p bits tag Endereço da linha do cache Endereço do byte ProblemaProblema zz p = 32 bitsp = 32 bits zz m = 5 bits (2m = 5 bits (255 = 32)= 32) zz k = 13 bits (2k = 13 bits (21313=8 k)=8 k) zz 8 8 a 6 c 1 b 48 8 a 6 c 1 b 4 1000 1000 1010 011011000001101101001000 1000 1010 01101100000110110100 p-k-m mk p bits tag Endereço da linha do cache Endereço do byte ProblemaProblema zz p = 32 bitsp = 32 bits zz m = 5 bits (2m = 5 bits (255 = 32)= 32) zz k = 13 bits (2k = 13 bits (21313=8 k)=8 k) zz 8 8 a 6 c 1 b 48 8 a 6 c 1 b 4 1000 1000 10100110110000011011010010001000 101001101100000110110100 p-k-m mk p bits tag Endereço da linha do cache Endereço do byte ProblemaProblema zz p = 32 bitsp = 32 bits zz m = 5 bits (2m = 5 bits (255 = 32)= 32) zz k = 13 bits (2k = 13 bits (21313=8 k)=8 k) zz 8 8 a 6 c 1 b 48 8 a 6 c 1 b 4 1000 10001010011011000001101101001000 1000101001101100000110110100 p-k-m mk p bits tag Endereço da linha do cache Endereço do byte ProblemaProblema zz p = 32 bitsp = 32 bits zz m = 5 bits (2m = 5 bits (255 = 32)= 32) zz k = 13 bits (2k = 13 bits (21313=8 k)=8 k) zz 8 8 a 6 c 1 b 48 8 a 6 c 1 b 4 1000100010100110110000011011010010001000101001101100000110110100 p-k-m mk p bits tag Endereço da linha do cache Endereço do byte ProblemaProblema zz p = 32 bitsp = 32 bits zz m = 5 bits (2m = 5 bits (255 = 32)= 32) zz k = 13 bits (2k = 13 bits (21313=8 k)=8 k) zz 88a6c1b488a6c1b4 1000100010100110110000011011010010001000101001101100000110110100 p-k-m mk p bits tag Endereço da linha do cache Endereço do byte ProblemaProblema zz p = 32 bitsp = 32 bits zz m = 5 bits (2m = 5 bits (255 = 32)= 32) zz k = 13 bits (2k = 13 bits (21313=8 k)=8 k) zz 88a6c1b488a6c1b4 100010001010011011000001101 10100100010001010011011000001101 10100 p-k-m mk p bits tag Endereço da linha do cache Endereço do byte ProblemaProblema zz p = 32 bitsp = 32 bits zz m = 5 bits (2m = 5 bits (255 = 32)= 32) zz k = 13 bits (2k = 13 bits (21313=8 k)=8 k) zz 88a6c1b488a6c1b4 10001000101001 1011000001101 1010010001000101001 1011000001101 10100 k = 1011000001100k = 1011000001100 p-k-m mk p bits tag Endereço da linha do cache Endereço do byte ProblemaProblema zz Bloco endereçadoBloco endereçado porpor 88a6c1b4 (hexadecimal)88a6c1b4 (hexadecimal) zz Linha Linha de cache 1011000001100 (de cache 1011000001100 (bináriobinário)) 160C (hexadecimal)160C (hexadecimal) 5644 (decimal)5644 (decimal) ProblemaProblema zz Os Os endereços endereços 8877a6c1b4 e 8a6c1b4 e 888a6c1b4 a6c1b4 necessitam necessitam da mesma linha da mesma linha de cachede cache zz ConclusãoConclusão:: Todo Todo par de par de endereços cuja diferença endereços cuja diferença for for múltipla múltipla do do tamanho da tamanho da cache cache vai utilizar vai utilizar a a mesma linha gerando mesma linha gerando conflitoconflito Sempre que houver conflitoSempre que houver conflito, a , a linha mais antiga será linha mais antiga será descartada da descartada da cachecache Próxima Próxima AulaAula zz Continuação Continuação de de hierarquia hierarquia de de memóriamemória zz Tentativa Tentativa de de solucionar solucionar o o problema problema de de conflito conflito no no cachecache Introdução àInformática Organização da Memória Conceito de Hierarquia de Memória Registradores Memória Principal Problemas Valores Valores Valores Memória Cache Memória Cache Termos Comuns Funcionamento Funcionamento Princípios da Cache Memória Cache Organização do Cache Curiosidades Cache com Mapeamento Direto Cache com Mapeamento Direto Cache com Mapeamento Direto Cache com Mapeamento Direto Cache com Mapeamento Direto Exemplo Exemplo Exemplo Exemplo Exemplo Exemplo Exemplo Exemplo Exemplo Exemplo Exemplo Exemplo Exemplo Problema Problema Problema Problema Problema Problema Problema Problema Problema Problema Problema Problema Problema Problema Próxima Aula
Compartilhar