arquitetura de computadores aula10

Upload: cirilolima

Post on 12-Oct-2015

56 views

Category:

Documents


0 download

TRANSCRIPT

Inteligncia Artificial

Arquitetura de ComputadoresAula 10

Carlos Andr Guerra FonsecaArquitetura de ComputadoresElementos do projeto da memria cache.Elementos do projeto da memriacacheFuno de mapeamento:

Comoexistemmenoslinhasdecachedoque blocos da memria principal, necessrio haver:

Umalgoritmoparamapearosblocosdamemriaprincipal s linhas de cache.Ummeioparadeterminarqualblocodamemriaprincipal ocupa uma linha da cache.

Tcnicas:Mapeamentoconjunto.direto,associativoeassociativoemElementos do projeto da memriacacheFuno de mapeamento:

Mapeamento direto:

Mapeia cada bloco da memria principal a apenas umalinha de cache possvel.

Os primeiros blocos da memria principal mapeiam as linhas da memria cache.Os prximos blocos da memria principal mapeiam a cache da mesma forma. O bloco da memria principal mapeia a linha 0 da cache, bloco +1 mapeia a linha 1, e assim por diante.b.t .----b--Primeiros blocos mda memria principal(igual ao tamanho da cache)Memria cacheb =tamanho do bloco em bitst =tamanho da tag em bits(a) Mapeamento diretoElementos do projeto da memriacacheFuno de mapeamento:

Mapeamento direto:

Para fins de acesso cache, cada endereo da memria principalpode ser visto como consistindo em trs campos:

Os bits menos significativos identificam uma palavra dentro de um bloco da memria principal.Os bits restantes especificam um dos 2blocos da memriaprincipal.A lgica da cache interpreta esses bits como uma tag de bits.Um campo de linha de bits.O segundo campo identifica uma das = 2 linhas da cache.Elementos do projeto da memriacacheFuno de mapeamento:

Mapeamento direto:Linha de cacheBlocos de memria principal mapeados00, m, 2m, ..., 2s-m11, m+1, 2m+1, ..., 2s-m+1......m-1m-1, 2m-1, 3m-1, ..., 2s-1Figura 4.9 Organizao da memria com mapeamento direto

S + WMemria Cache TagDadosEndereo de memrias - rI TO? ILinhaI Palavra Ivrw vIIIIIIIII I I I I I I Is - r,/Iw,x'CompareI I I I I II I I I I I(Acerto na cache)1se igualose diferenteO se igual 1se diferente(Falha na cache) Memria principalI l i}Bow} BjI I I I I IeII----_JI,II II IIIeIII I I I

eI I I IIIIIElementos do projeto da memriacacheFuno de mapeamento:

Exemplo de mapeamento direto:

Uma cache pode manter 64 KBytes.

Os dados so transferidos entre a memria principal e acache em blocos de 4 bytes cada.

Logo a cache organizada como 16K linhas de 4 bytes cada.16 = 214 portanto r = 14

A memria principal consiste em 16 MBytes, com cada byte enderevel diretamente por um endereo de 24 bits (224 = 16 ).Para fins de mapeamento pode-se considerar que a memria principal consiste em 4 M blocos de 4 bytes cada.Elementos do projeto da memriacacheFuno de mapeamento:

Exemplo de mapeamento direto:

Faa uma tabela que mostre o mapeamento direto daslinhas de cache.Linha de cacheEndereo de memria inicial do bloco0000000, 010000, ... FF00001000004, 010004, ..., FF0004......214-100FFFC, 01FFFC, ..., FFFFFCElementos do projeto da memriacacheFuno de mapeamento:

Exemplo de mapeamento direto:

Memria Principal 16Mbytes

End. Principal: log216M = 24bits

Memria Cache 16K palavras

End. Cache: log216K = 14bits

Bits de Palavra de 4 bytes: 2 bits

Tag = End. Princ. (End. Cache + Bits Pal.)

24 (14 + 2) = 8bits

TagLinhaPalavra

Endereo da memria principal8 bits14 bits2 bitsElementos do projeto da memriacacheFuno de mapeamento:

Exemplo de mapeamento direto:

Comoapalavrade4bytes,retiramosortuloedividimos por 4 e obtemos o endereo mapeado:

0000 / 4 = 0000 0004 / 4 = 0001 339C / 4 = 0CE7FFFC / 4 = 3FFFFFF8 / 4 = 3FFEElementos do projeto da memriacacheFuno de mapeamento:

Mapeamento direto:

Vantagem:

Simples e pouco dispendiosa para implementar.

Desvantagem:

Existe um local de cache fixo para cada bloco.Se um programa referenciar palavras repetidamente de dois blocos diferentes, mapeados para a mesma linha, ento os blocos sero continuamente trocados na cache, e a razo de acerto ser baixa.Elementos do projeto da memriacacheFuno de mapeamento:

Mapeamento associativo:Compensaadesvantagemdomapeamentodireto,permitindo que cada bloco da memria principal sejacarregado em qualquer linha da cache.Elementos do projeto da memriacacheFuno de mapeamento:

Mapeamento associativo:

A lgica de controle da cache interpreta um endereode memria como um campo Tag e um campo Palavra.

O campo Tag identifica o bloco da memria principal.

Para determinar se um bloco est na cache, a lgica de controle da cache precisa comparar simultaneamente a tag de cada linha.Elementos do projeto da memriacacheFuno de mapeamento:

Mapeamento associativo:

Considerando o exemplo anterior mas agora usando o mapeamento associativo, um endereo da memria principal consiste em uma tag de 22 bits e um nmerodo byte de 2 bits.

Endereo da memria principal22 bits2 bits

A tag de 22 bits precisa ser armazenada com o bloco de dados de 32 bits para cada linha na cache.

Os 22 bits mais esquerda do endereo formam a tag.TagPalavraElementos do projeto da memriacacheFuno de mapeamento:

Mapeamento associativo:

O endereo hexadecimal de 24 bits 16339C tem a tagde 22 bits 058CE7.Endereo de memria16339C(hexa)0001 0110 0011 0011 1001 1100 (binrio)0001 0110 0011 0011 1001 11 (binrio)00 0101 1000 1100 1110 0111 (binrio)058CE7Tag (22 bits mais esquerda)Elementos do projeto da memriacacheFuno de mapeamento:

Mapeamento associativo:

Vantagem:

Existe flexibilidade em relao a qual bloco substituir quandoum novo bloco for lido para a cache.Algoritmos de substituio so projetados para maximizar a razo de acerto.

Desvantagem:

Complexidade do circuito necessrio para comparar as tags de todas as linhas da cache em paralelo.Elementos do projeto da memriacacheFuno de mapeamento:

Mapeamento associativo em conjunto:

um meio-termo que reala os pontos fortes das tcnicas direta e associativa, enquanto reduz suas desvantagens.

Um bloco pode ser mapeado para qualquer uma daslinhas do conjunto . Cada palavra mapeada para todas as linhas da cache em umconjuntoespecfico:obloco0damemriaprincipalmapeado no conjunto 0, e assim por diante.Elementos do projeto da memriacacheFuno de mapeamento:

Mapeamento associativo em conjunto:

Acacheassociativaemconjuntopodeserimplementada fisicamente como:

caches associativas. caches de mapeamento direto.

Cadacachemapeadadiretamenteconhecidacomo uma via, consistindo em linhas.

As primeiras linhas da memria principal so mapeadas diretamente nas linhas de cada via; o prximo grupo de linhas da memria principal mapeado de modo semelhante, e assim por diante.Elementos do projeto da memriacacheFuno de mapeamento, comparao:

Implementao mapeada diretamente:

Emgeralusadaparapequenosgrausdeassociatividade (valores pequenos de ).

Implementao com mapeamento associativo:

Normalmenteusadaparagrausdeassociatividademais altos.Elementos do projeto da memriacacheFuno de mapeamento:

Mapeamento associativo em conjunto:

A lgica de controle de cache interpreta um endereode memria como trs campos: Tag, Set e Palavra.

Os bits especificam um dos = 2conjuntos.

Os bits dos campos Tag e Set especificam um dos 2 blocos da memria principal.Elementos do projeto da memriacacheFuno de mapeamento, comparao:

Mapeamento totalmente associativo:

A tag em um endereo de memria muito grande e precisa ser comparada com a tag de cada linha da cache.

Mapeamento associativo em conjunto com vias:

A tag em um endereo de memria muito menor e scomparada conjunto.comastagsdentrodeumnicoElementos do projeto da memriacacheFuno de mapeamento:

Mapeamento associativo em conjunto:

Tamanho do endereo: + bitsNmero de unidades endereveis: 2+bytes

Tamanho do bloco = tamanho da linha = 2palavras oubytespalavras ouNmero de blocos na memria principal: 2+2= 2Nmero de linhas no conjunto:

Nmero de conjuntos: = 2Elementos do projeto da memriacacheFuno de mapeamento:

Mapeamento associativo em conjunto:

Nmero de linhas na cache: = = 2

Nmero de conjuntos: = 2

Tamanho da cache: 2+palavras ou bytes

Tamanho da tag: bits

No caso extremo de:

= , = 1, a tcnica associativa em conjunto se reduz ao mapeamento direto.

= 1 = , a tcnica associativa em conjunto se reduz ao mapeamento associativo.Elementos do projeto da memriacacheFuno de mapeamento:

Mapeamento associativo em conjunto:

Organizao associativa em conjunto mais comum: Utiliza duas linhas por conjunto: = , = 22 Melhora significativamente a razo de acerto em relao ao mapeamento direto.

Associao em conjunto com 4 linhas por conjunto: = , = 44 Cria uma melhora adicional modesta por um custo adicional relativamente pequeno.

Outrosaumentosnonmerodelinhasporconjunto tm pouco efeito.Elementos do projeto da memriacacheSimulao da execuo de um compilador GCCElementos do projeto da memriacacheFuno de mapeamento:

Mapeamento associativo em conjunto:

Considerando o exemplo anterior mas agora usando o mapeamento associativo em conjunto, com duas linhas em cada conjunto (2-way). Tem-se:

Memria Principal 16Mbytes

End. Principal: log216M = 24bits

Memria Cache 16K palavras e Nmero de Conj. 2: 1 bit

End. Cache: log216K n bits conj. = 14 1 = 13bits

Bits de Palavra de 4 bytes: 2 bits

Tag = End. Princ. (End. Cache + Bits Pal.)

24 (13 + 2) = 9bitsElementos do projeto da memriacacheFuno de mapeamento:

Mapeamento associativo em conjunto:

Comoapalavrade4bytes,retiramosortuloedividimos por 4 e obtemos o endereo mapeado:

0000 / 4 = 0000 0004 / 4 = 0001 339C / 4 = 0CE77FFC / 4 = 1FFF7FF8 / 4 = 1FFEObs.: Valores em hexadecimalLinhaLinhaTagTagElementos do projeto da memriacacheAlgoritmos de substituio:

Se a cache estiver cheia e um novo bloco for trazido para a cache, um dos blocos precisa ser substitudo.

Para o mapeamento direto existe apenas uma linha possvel para qualquer bloco em particular.substituio.

Para alcanar alta velocidade, tal algoritmo precisa ser implementado em hardware. Paraastcnicasassociativaeassociativaemconjunto,necessrioumalgoritmodeElementos do projeto da memriacacheAlgoritmos de substituio:

Usado menos recentemente (LRU):

Provavelmente o mais eficaz.

Substituaobloconoconjuntoquepermaneceunacache por mais tempo sem qualquer referncia a ele.

facilmenteimplementadoparaassociatividadeemconjunto com duas linhas por conjunto:

Cada linha inclui um bit USE.Quando uma linha referenciada, seu bit USE definido como 1, e o bit USE da outra linha nesse conjunto definido como 0.Quando um bloco tiver que ser lido para o conjunto, a linha cujo bit USE for 0 utilizada.Elementos do projeto da memriacacheAlgoritmos de substituio:

Usado menos recentemente (LRU):

Tambmrelativamentefcildeimplementarparauma cache totalmente associativa:

O mecanismo de cache mantm uma lista separada de ndices para todas as linhas na cache.Quando uma linha referenciada, ela passa para a frente dalista.Para a substituio, a linha no final da lista utilizada.

Devido sua simplicidade de implementao, LRU oalgoritmo de substituio mais popular.Elementos do projeto da memriacacheAlgoritmos de substituio:

Primeiro a entrar, primeiro a sair (FIFO):

Substitua o bloco no conjunto que esteve na cache pormais tempo.

facilmente implementado como uma tcnica round- robin ou de buffer circular.

Usado menos frequentemente (LFU):

Substituaaquelebloconoconjuntoquetevemenos referncias.

Poderia ser implementado associando um contador acada linha.Elementos do projeto da memriacacheAlgoritmos de substituio: Escolherumalinhaaleatriadentreaslinhascandidatas:

Tcnica no baseada no uso.

Estudos de simulao tm mostrado que a substituio aleatria oferece um desempenho ligeiramente inferior a um algoritmo baseado no uso.Elementos do projeto da memriacachePoltica de escrita:

Quando um bloco que est na cache estiver para ser substitudo, existem dois casos a considerar:

Se ele no tiver sido alterado:

Pode ser substitudo por um novo bloco sem atualizar o bloco antigo.

Sepelomenosumaoperaodeescritativersido realizada em uma palavra nessa linha da cache:

A memria principal precisa ser atualizada escrevendo a linha de cache no bloco de memria antes de trazer o novo bloco.Elementos do projeto da memriacachePoltica de escrita:

Problemas a combater:

Quandomaisdeumdispositivopodeteracessomemria principal:

Exemplo: um mdulo de E/S pode ser capaz de ler-escrever diretamente na memria.Se o dispositivo de E/S tiver alterado a memria principal,ento a palavra da cache invlida.Se uma palavra tiver sido alterada apenas na cache, ento a palavra correspondente da memria invlida.Elementos do projeto da memriacachePoltica de escrita:

Problemas a combater:

Quando mltiplos processadores so conectados ao mesmobarramento e cada processador tem sua prpria cache local:

Se uma palavra for alterada em uma cache, ela possivelmente poderia invalidar uma palavra em outras caches.Elementos do projeto da memriacachePoltica de escrita:

Write-through:

Tcnica mais simples.

Todas as operaes de escrita so feitas na memria principal e tambm na cache, garantindo que a memria principal sempre seja vlida.Qualqueroutromduloprocessador-cachepodemonitorarotrfegoparaamemriaprincipalpara manter a consistncia dentro de sua prpria cache.

Principal desvantagem:

Gera um trfego de memria considervel, podendo vir a ser um gargalo.Elementos do projeto da memriacachePoltica de escrita:

Write-back:

Tcnica alternativa.

Minimiza as escritas na memria.

As atualizaes so feitas apenas na cache.Quandoocorreumaatualizao,umbitdelinha,modificao,oubitdeuso,associadomarcado.Depois, quando um bloco substitudo, ele escrito de volta na memria principal se, e somente se, o bit de modificao estiver marcado.Elementos do projeto da memriacachePoltica de escrita:

Write-back:

Problema:

Partes da memria principal podem ficar invlidas, portanto os acessos pelos mdulos de E/S s podem ser permitidos pela cache.Isso exige circuitos complexos e gera um gargalo em potencial.Elementos do projeto da memriacachePoltica de escrita:

Coerncia de cache:

Em uma organizao de barramento em que mais de um processador tem uma cache e a memria principal compartilhada:

Se os dados em uma cache forem alterados, isso invalida a palavra correspondente na memria principal e em outras caches que tiverem essa mesma palavra.Mesmo utilizando uma poltica write-through as outras caches podem conter dados invlidos.Elementos do projeto da memriacachePoltica de escrita:

Tcnicas para manter a coerncia de cache:

Observao do barramento com write-through:

Cada controlador de cache monitora as linhas de endereo para detectar as operaes de escrita para a memria por outros mestres de barramento.Se outro mestre escrever em um local na memria compartilhada que tambm reside na memria cache, o controlador de cache invalida essa entrada na cache.Essa estratgia depende do uso de uma poltica write-through por todos os controladores de cache.Elementos do projeto da memriacachePoltica de escrita:

Tcnicas para manter a coerncia de cache:

Transparncia do hardware:

Um hardware adicional usado para garantir que todas as atualizaes na memria principal por meio da cache sejam refletidas em todas as caches.Se um processador modificar uma palavra em sua cache, essa atualizao escrita na memria principal e quaisquer palavras correspondentes em outras caches so atualizadas.Elementos do projeto da memriacachePoltica de escrita:

Tcnicas para manter a coerncia de cache:

Memria no cachevel:

Somente uma parte da memria principal compartilhada por mais de um processador, e esta designada como no mantida em cache.Todos os acessos memria compartilhada so falhas de cache, pois a memria compartilhada nunca copiada para a cache.A memria no mantida em cache pode ser identificada usando lgica de seleo de chip ou bits mais significativos de endereo alto.Elementos do projeto da memriacacheTamanho da linha:

medida que o tamanho do bloco aumenta, de tamanhos muito pequenos para maiores, a razo de acerto a princpio aumentar.

A razo de acerto comea a diminuir quando o bloco se torna ainda maior e a probabilidade de uso da informao recm-trazida se torna menor que a probabilidade de reutilizar as informaes que foram substitudas.Elementos do projeto da memriacacheTamanho da linha:

Blocos maiores reduzem o nmero de blocos que cabem em uma cache.

Cada busca de bloco escreve sobre o contedo antigoda cache.

Umnmeropequenodeblocosresultaemdadossendo modificados pouco depois de serem buscados.

medida que o bloco se torna maior, cada palavra adicional fica mais distante da palavra solicitada.

Portanto, tem menos probabilidade de ser necessriano futuro prximo.Elementos do projeto da memriacacheNmero de memrias caches:

Quando as memrias caches foram introduzidas, o sistema de memria tpico tinha uma nica cache.

Hoje o uso de mltiplas caches comum.

medida que a densidade lgica aumenta, torna- sepossvel ter uma cache no mesmo chip que o processador.

A cache no chip reduz a atividade do barramento externo do processador, portanto, agiliza o tempo de execuo e aumenta o desempenho geral do sistema.Elementos do projeto da memriacacheNmero de memrias caches:

Quando a leitura dos dados so feitos na cache no chip, no existe o acesso ao barramento.

Como os caminhos de dados internos ao processador so curtos, os acessos cache no chip sero feitos mais rpido que os ciclos de barramento.

Durante esse perodo, o barramento estar livre para aceitar outras transferncias.Elementos do projeto da memriacacheNmero de memrias caches:

A maior parte dos projetos contemporneos inclui caches dentro e fora do chip.

A organizao mais simples a cache de dois nveis:

Cache interna ou nvel 1 (L1)Cache externa ou nvel 2 (L2)

Motivo para incluir uma cache L2:

Normalmente quando ocorre uma falta na cache L1 o dado est em L2, logo h um aumento de desempenho.Elementos do projeto da memriacacheNmero de memrias caches:

Cache L2 fora do chip:

Para reduzir a carga sobre o barramento do sistema, muitos projetos usam um caminho de dados separado para transferncia entre a cache L2 e o processador.

Cache L2 no chip do processador:

Graas ao encolhimento contnuo dos componentes doprocessador.

Desempenho melhor.Elementos do projeto da memriacacheNmero de memrias caches:

Cache L3:

Originalmente era acessvel pelo barramento externo.

Atualmenteamaioriadosmicroprocessadorespossuiuma cache L3 no chip.

Ousodecachesmultinvelcomplicatodasasquestesdeprojetorelacionadasincluindo:

Tamanho;

Algoritmo de substituio;

Poltica de escrita.acaches,Elementos do projeto da memriacacheCaches unificadas:

Inicialmente muitos dos projetos consistiam em umanica cache usada para armazenar referncias a dados e instrues.

Vantagens:

Para determinado tamanho da cache, uma unificada tem uma taxa de acerto mais alta que as caches divididas,pois ela equilibra a carga entre buscas de instruo e dados automaticamente.Somenteumacacheprecisaserprojetadaeimplementada.Elementos do projeto da memriacacheCaches separadas:

Atualmentecomumdividiracacheemduas: uma dedicada a instrues e uma a dados.Essasduascachesexistemnomesmonvel,normalmente como duas caches L1.

Quando o processador tenta buscar uma instruo da memria principal, ele primeiro consulta a cache L1 de instruo.

Quando o processador tenta buscar dados da memria principal, ele primeiro consulta a cache L1 de dados.Elementos do projeto da memriacacheCaches separadas:

Vantagem:Eliminaadisputapelacacheentredeinstruoeaunidadedeaunidadedebusca/decodificaoexecuo. Issoimportanteemqualquerprojetoquecontacomo pipeline de instrues.