Memórias Cache. Memória



Documentos relacionados
Microprocessadores. Memórias

Introdução à Informática. Alexandre Meslin

Hierarquia de Memória

Memórias cache. Tópicos. João Canas Ferreira Tópicos de Arquitectura de Computadores. 1 Aspectos elementares

Organização e Arquitetura de Computadores. Ivan Saraiva Silva

Gerência de Memória. Algoritmos de Substituição de Páginas

Organização e Arquitetura de Computadores I

Arquitectura de Computadores II

Organização de Computadores

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CONTINUAÇÃO CAPÍTULO 5. Cristina Boeres

Memória cache (cont.) Sistemas de Computação

Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer Localidade

6 de Maio de Aula 16

Correção de Erros. Erros de memória de semicondutores podem ser:

Hierarquia de memória

Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado em Ciência da Computação.

Memória Cache. Memória Cache. Localidade Espacial. Conceito de Localidade. Diferença de velocidade entre Processador/MP

T1: T2: T3: T4: T5: T6: T7: T: P: TEÓRICA

Sistemas Operacionais Gerenciamento de Memória. Carlos Ferraz Jorge Cavalcanti Fonsêca

Capítulo 5 Livro do Mário Monteiro Conceituação. Elementos de projeto de memória cache

Módulos Combinatórios

Arquitetura e Organização de Processadores. Aulas 9 e 10. Memória cache

Arquitetura e Organização de Computadores

Circuitos Aritméticos

Infraestrutura de Hardware. Explorando Desempenho com a Hierarquia de Memória

Memória cache. Prof. Francisco Adelton

Resumo. l Hierarquia de Armazenamento l Discos Magnéticos l Mapeamento de Endereços l Tempos de Acesso l Exemplos l Referências

Estrutura de um Computador

Placas Gráficas. Placas Gráficas. Placas Gráficas. Placas Gráficas. O que é? Para que serve? Resolução (cont.) Resolução

Aula 09. Gerenciamento de Memória Virtual Paginação. Capítulo 10 PLT Pág Gerenciamento de Memória Virtual

Memória. Conceitos gerais Hierarquia de memórias

Memória e Hierarquia de Memória. Memória Vs. Armazenamento

Níveis de memória. Diferentes velocidades de acesso. Memória Cache. Memórias Auxiliar e Auxiliar-Backup

Memória. Memória Secundária

MEMÓRIA CACHE FELIPE G. TORRES

Subsistema de Memória. Aleardo Manacero Jr.

Memória Cache endereço de memória

- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula

Memória. Gestão do espaço lógico Paginação Segmentação com paginação

SISTEMAS OPERACIONAIS. 3ª. Lista de Exercícios

Aula 13: Memória Cache

Hierarquia de memória e a memória cache

COMPUTAÇÃO. O estudante deve ser capaz de apontar algumas vantagens dentre as seguintes, quanto à modalidade EaD:

Memória Cache Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

Arquitetura de Microprocessadores

Arquitetura de Computadores

Sistemas de Memória II

UFRJ IM - DCC. Sistemas Operacionais I. Unidade III Memória Primária. 29/04/2014 Prof. Valeria M. Bastos

Sistema de Recuperação da Senha nos Sistemas Informáticos da FEUP

Hierarquia de Memória

Instituto Superior Técnico Departamento de Engenharia Electrotécnica e de Computadores Arquitectura de Computadores. 2º sem.

Memória. Memória Cache

Gerência de Memória. Paginação

Organização de um Sistema Operativo

Informática Aplicada

Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão

Memória Cache. Walter Fetter Lages.

AULA Nº 11 SISTEMAS OPERACIONAIS. Técnicas de Memória Virtual

Objetivos. Arquitetura x86. Evolução dos Microprocessadores com arquitetura x86. Universidade São Judas Tadeu. Introdução à Computação

Prova Modelo. Nome: Número:

OBSERVAÇÕES: EXERCÍCIOS

Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz

DCC-IM/NCE UFRJ Pós-Graduação em Informática. Gabriel P. Silva. Microarquiteturas de Alto Desempenho

Arquitetura de Computadores

CAPÍTULO 2 SISTEMAS DE NUMERAÇÃO E CÓDIGOS

Os textos nestas caixas foram adicionados pelo Prof. Joubert

INTERFACE PARALELA. Área: Eletrônica Nível de conhecimento necessário: básico. Autor:

Memória Cache: Funcionamento

Gerenciamento de Memória Minix 3.1.7

Introdução. Software Básico Aula 3. Prof. Dr. Rogério Vargas.

Arquitetura de Computadores. Memórias

Sistemas Digitais II. Interface com o mundo analógico. Prof. Marlon Henrique Teixeira Abril/2014

PCS-2529 Introdução aos Processadores. Prof. Dr. Paulo Sérgio Cugnasca

Fundamentos de Arquitetura e Organização de Computadores

Diminui o gargalo existente entre processador e memória principal; 5 a 10 vezes mais rápidas que a memória principal; Ligada diretamente à MP;

1. Estrutura de Dados

12 de Março de Aula 5

Programação em Sistemas Computacionais

Transcrição:

Memórias Cache Memória

Organização da cache de memória Funcionamento: CPU regs controlo da cache memória cache Memória central CPU referencia memória Se está em cache acede à cache Senão acede à memória e actualiza cache Arquitectura de Computadores (2008/2009): Memória 491

Organização da cache É necessário manter informação sobre o que está na cache Que zonas da cache estão realmente em uso? De inicio a cache está vazia! Manter que endereços/blocos da memória central estão na cache A consulta e actualização desta informação tem de ser eficiente!!! Arquitectura de Computadores (2008/2009): Memória 492

Endereços e blocos de memória Exemplo: endereços de 8 bits blocos de 8 bytes Dado um endereço E: E/8 = número do bloco E%8 = byte dentro do bloco (começando em zero) ou seja: 8 bytes por bloco = 2 3 3 bits Os 3 bits menos significativos indicam bytes dentro do mesmo bloco Os restantes correspondem ao número do bloco núm. bloco deslocamento no bloco 0 = 00000000 1 = 00000001 2 = 00000010 3 = 00000011 4 = 00000100 5 = 00000101 6 = 00000110 7 = 00000111 8 = 00001000 9 = 00001001 10= 00001010 11= 00001011 12= 00001100 13= 00001101 14= 00001110 15= 00001111 16= 00010000 17= 00010001 18= 00010010 19= 00010011 20= 00010100 21= 00010101 22= 00010110 23= 00010111 24= 00011000 25= 00011001... bloco 0 bloco 1 bloco 2 bloco 3 Arquitectura de Computadores (2008/2009): Memória 493

Exemplo A cache tem para cada bloco, se está ocupado () ou não e o respectivo número de bloco, quando ocupado 1 linha da cache (ou bloco) núm.bloco núm.bloco Bloco na cache Bloco na cache núm.bloco núm.bloco Bloco na cache Bloco na cache Para cada acesso do CPU à memória, parte-se o endereço de acordo com o tamanho do bloco e procura-se o seu número na cache Depois usam-se os bits de deslocamento no bloco para aceder ao byte pretendido só é possível se a procura for rápida! Arquitectura de Computadores (2008/2009): Memória 494

Memória associativa Memória interrogável pelo conteúdo Exemplo com 4 entradas valor a procurar 110011 entrada 0 entrada 1 entrada 2 110011 comparadores entrada 3 hit na entrada 1 Compara em paralelo com todas as entradas Arquitectura de Computadores (2008/2009): Memória 495

Cache associativa pura Usa o número do bloco como chave (ou tag) na memória associativa para procurar o bloco na cache Comparação com todas as entradas em simultâneo Endereço número do bloco ou tag núm.bloco Bloco na cache núm.bloco Bloco na cache núm.bloco Bloco na cache núm.bloco Bloco na cache memória associativa Deslocamento no bloco Arquitectura de Computadores (2008/2009): Memória 496

Caches associativas As caches associativas são muito eficientes: Qualquer bloco pode estar em qualquer posição A pesquisa do bloco faz-se em paralelo, com tantos comparadores quantos os blocos que cabem na cache Mas são muito complexas/caras Cada linha da cache deve guardar os bits do número do bloco carregado nessa posição Cada comparador é de tantos bits quantos os bits no número do bloco Muitos comparadores (um para cada linha da cache) Arquitectura de Computadores (2008/2009): Memória 497

Tentar não usar memória associativa Fixamos a posição na cache para cada bloco Exemplo: Cache com 4 linhas de blocos de 8 bytes O número da linha é dado pelo núm.bloco%núm.linhas Ou seja, por 2 bits do endereço: linha 0 linha 1 linha 2 linha 3 Bloco 0, 4, 8, Bloco 1, 5, 9, Bloco 2, 6, 10, Bloco 3, 7, 11, 0 = 00000000 1 = 00000001 2 = 00000010 3 = 00000011 4 = 00000100 5 = 00000101 6 = 00000110 7 = 00000111 8 = 00001000 9 = 00001001 10= 00001010 11= 00001011 12= 00001100 13= 00001101 14= 00001110 15= 00001111 16= 00010000 17= 00010001 18= 00010010 19= 00010011 20= 00010100 21= 00010101 22= 00010110 23= 00010111 24= 00011000 25= 00011001... bloco 0 bloco 1 bloco 2 bloco 3 Arquitectura de Computadores (2008/2009): Memória 498

Cache de mapa directo É ainda necessário manter para cada linha uma chave (ou tag) que identifique qual o bloco realmente na cache de entre os vários possíveis O que distingue os vários blocos são os bits mais significativos restantes do endereço Exemplo: endereços de 8 bits, cache de 4 linhas e 8 bytes por bloco chave núm.linha desl.no bloco linha 0 linha 1 linha 2 linha 3 chave chave chave chave Bloco na cache Bloco na cache Bloco na cache Bloco na cache Arquitectura de Computadores (2008/2009): Memória 499

Resumo: Tratamento do endereço Endereço Deslocamento no bloco Dimensão do bloco (em bytes) núm. bloco Linha na cache Nº de linhas chave (tag) Em binário, estas operações correspondem a separar os bits do endereço em 3 partes, de acordo com cada dimensão: Endereço: chave núm.linha desl.no bloco Arquitectura de Computadores (2008/2009): Memória 500

Vantagens da Cache de mapa directo São eficientes na pesquisa em cache Porque usam bits do endereço directamente como índice no mapa da cache, só precisando de comparar essa chave As caches de mapa directo são mais baratas do que as associativas: O mapa da cache tem menos bits Não necessita de memória associativa (só precisam de 1 comparador, de tantos bits quantos os na chave dos blocos) Arquitectura de Computadores (2008/2009): Memória 501

Desvantagems da Cache de mapa directo Levam a colisões: todos os blocos com a mesma linha atribuída colidem nessa posição mesmo que existam outras linhas livres! A probabilidade de colisões diminui à medida que se aumenta a Capacidade da Cache mas o problema mantém-se Arquitectura de Computadores (2008/2009): Memória 502

Cache associativa por grupos Solução híbrida de compromisso Procura-se responder às desvantagens das duas técnicas anteriores: Ter menos comparadores que associativa pura Evitar as colisões no mapa directo Abordagem: Cada "linha" dá lugar a um grupo (conjunto) de blocos Cada bloco pode ficar em qualquer posição dentro do grupo A busca no grupo é efectuada procurando a chave do bloco usando memória associativa Arquitectura de Computadores (2008/2009): Memória 503

Cache associativa por grupos Os blocos de memória são mapeados directamente num grupo da cache O número do grupo é dado pelo: núm.bloco%núm.grupos Dentro do grupo pode ficar em qualquer posição, como se o grupo fosse uma "mini cache associativa pura" grupo 0 chave chave bloco bloco grupo 1 chave chave bloco bloco memórias associativas (partilham os comparadores pois só um grupo é procurado de cada vez) Arquitectura de Computadores (2008/2009): Memória 504

Cache associativa por grupos Exemplo (endereço de 8 bits): Cache com 2 grupos 4 blocos de 8 bytes (2 por grupo) O núm. do grupo é dado pelo núm.bloco%núm.grupos Ou seja, por 1 bit do endereço: grupo 0 grupo 1 chave núm.grupo desl.no bloco chave chave chave chave Arquitectura de Computadores (2008/2009): Memória blocos 0,2,4, blocos 1,3,5, 0 = 00000000 1 = 00000001 2 = 00000010 3 = 00000011 4 = 00000100 5 = 00000101 6 = 00000110 7 = 00000111 8 = 00001000 9 = 00001001 10= 00001010 11= 00001011 12= 00001100 13= 00001101 14= 00001110 15= 00001111 16= 00010000 17= 00010001 18= 00010010 19= 00010011 20= 00010100 21= 00010101 22= 00010110 23= 00010111 24= 00011000 25= 00011001... bloco 0 bloco 1 bloco 2 bloco 3 505

Política de escrita nas caches Quando o CPU altera o conteúdo da posição de memória E de determinada memória, faz sentido que a alteração seja feita na sua cache; a ideia é que o CPU pode vir a ler esse valor em breve. O que acontece depois tem a ver com a política de escrita: Write-through Write-back (delayed) Arquitectura de Computadores (2008/2009): Memória 506

Write-through A memória cache e a memória central são actualizadas em cada escrita Assegura que a cache e a memória central estão sempre coerentes É lento porque cada escrita demora o tempo de escrita na memória central (não demora o tempo de acesso à cache) Tolerável, porque normalmente há muito mais acessos em leitura do que em escrita (L-1) escrita cache (L) Memória (L+1) Arquitectura de Computadores (2008/2009): Memória 507

Write-back Quando há uma escrita só é actualizada a cache; mas marca-se esse bloco como alterado (dirty) Só quando um bloco é removido da cache é que se actualiza o bloco na memória central (se necessário) (L-1) escrita cache (L) bloco alterado Memória (L+1) É mais rápido do que o write-through Diminui o tráfego para a memória central O inconveniente é que a cache e a memória central nem sempre estão coerentes isto pode provocar problemas valor antigo Arquitectura de Computadores (2008/2009): Memória 508

Politica de substituição de blocos Se Cache miss - é preciso arranjar espaço para o novo bloco. Se cache cheia, qual o bloco a ser eliminado da cache? O bloco que no futuro vai ser menos necessário. Mas qual é esse? LRU Least Recently Used eliminar o bloco que foi referenciado à mais tempo LFU Least Frequently Used eliminar o bloco que foi referenciado menos vezes FIFO First In First Out eliminar o bloco mais antigo Aleatório escolhe-se um bloco de forma aleatória Arquitectura de Computadores (2008/2009): Memória 509

Hierarquia de cache do Intel Pentium Registos (L0) Cache L1 dados 16 KB Linhas de 32B 4 linhas/grupo Write-through Cache L1 instruções 16 KB Linhas de 32B 4linhas/grupo L2 Unificada 128KB -2 MB 4 linhas/grupo Write-back Linhas de 32B Memória Central Até 4GB Chip do CPU 5ns 10ns 50ns Exemplo de Cache L2 de 256KB = 2048grupos*4linhas/grupo*32B/linha Endereço: 31 16 15 5 4 0 16 bits para a chave (tag) 11 bits para escolher o grupo 5 bits para o desloc. na linha Arquitectura de Computadores (2008/2009): Memória 510

Exemplo: mov eax,[393282] Tratamento na L2 do endereço: 393282 Em binário: 0000 0000 0000 0110 0000 0000 0100 0010 Dividindo o endereço de acordo com a cache L2: 0000000000000110 00000000010 00010 Deve procurar no grupo 2 tag = 6 se encontrar lê a partir do byte 2 grupo 0 grupo 1 v v v v v v v v tag tag tag tag tag tag tag tag 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 31 31 31 31 31 31 31 31 grupo 2 v v v v tag 0 1 2 3 4 5 tag 6 0 1 2 3 4 5 tag 0 1 2 3 4 5 tag 0 1 2 3 4 5 31 31 31 31 Arquitectura de Computadores (2008/2009): Memória 511

Impacto do tamanho da cache no hit-rate Arquitectura de Computadores (2008/2009): Memória 512

Quando falha a cache (miss) Existem falhas (misses) quando as localidades não se verificam: Muda o conjunto de instruções em execução (workingset): devido a jumps, calls, Ou este conjunto não cabe todo na cache Por acesso a dados não contíguos em memória Ou estruturas que não cabem na cache O SO troca de programa em execução Mudou de código e de dados Arquitectura de Computadores (2008/2009): Memória 513