fundamentos da arquitetura de computadores memória cache prof. andré renato 1º semestre / 2012

55
Fundamentos da Arquitetura de Computadores Memória Cache Prof. André Renato 1º Semestre / 2012

Upload: internet

Post on 18-Apr-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

  • Slide 1
  • Fundamentos da Arquitetura de Computadores Memria Cache Prof. Andr Renato 1 Semestre / 2012
  • Slide 2
  • Memria Cache Vamos revisar alguns pontos importantes: O principal uso dos sistemas computacionais para execuo de programas; A velocidade do processador bem maior do que a da memria principal; O processador precisa de dados da memria para realizar operaes; Na maior parte do tempo, o processador fica ocioso, esperando o dado chegar da memria;
  • Slide 3
  • Memria Cache Para que meu sistema computacional possa melhorar de desempenho preciso tratar o ponto que est sendo o gargalo do processamento; Se eu entender como funciona a execuo de um programa e como o acesso memria, eu vou conseguir melhorar o desempenho;
  • Slide 4
  • Memria Cache O que acontece com um programa qualquer (Word, por exemplo) aps ser iniciado pelo usurio? O estudo do fluxo de execuo dos programas mostrou que eles podem ser divididos e executados por partes.
  • Slide 5
  • Memria Cache
  • Slide 6
  • Assim, os programas costumam executar um pequeno grupo de instrues vrias vezes em diversos momentos; Foi elaborado ento o princpio da localidade como forma de ajudar na melhoria do desempenho de execuo dos programas;
  • Slide 7
  • Memria Cache O princpio da localidade uma tentativa de prever qual ser a demanda futura da CPU por instrues do programa que esto na memria principal; Ele divido em duas partes: localidade espacial e localidade temporal;
  • Slide 8
  • Memria Cache A localidade espacial baseada em uma das principais estruturas de controle de fluxo: a sequncia; muito comum que um programa seja composto por diversos comandos que devem ser executado um aps o outro;
  • Slide 9
  • Memria Cache Na hora da compilao, estes comandos so transformados em instrues de mquina que ficam prximas entre si; Assim, se um programa precisa de uma instruo que est na clula X da memria, muito provvel que em breve ele precise da instruo que est na clula X+1, X+2, X+3....
  • Slide 10
  • Memria Cache Sendo comum que um grupo de instrues seja executado mais frequentemente que os demais, bem provvel que aps executar uma instruo T, em breve, o programa execute a instruo T novamente;
  • Slide 11
  • Memria Cache Como tirar proveito do princpio da localidade? O projetista do sistema vai criar um elemento de memria intermedirio entre CPU/MP, chamado de memria cache.
  • Slide 12
  • Memria Cache Ele deve ter elevada velocidade e ser grande o suficiente para guardar partes do programa, aproveitando ao mximo o princpio da localidade e pequena o suficiente para no elevar muito o custo do sistema. Como vai funcionar o sistema?
  • Slide 13
  • Memria Cache 1) Sempre que a CPU precisar de um informao (dado ou instruo), ela acessa a memria cache. 2) Se a informao estiver l, chamado de acerto de cache (cache hit) e ela transmitida em velocidade compatvel com a CPU.
  • Slide 14
  • Memria Cache 3) Se a informao no estiver, chamado de falha de cache (cache miss). A informao ento pedida MP e enviada para a CPU. No entanto, no s a informao pedida MP, mas tambm as informaes subsequentes, pressupondo que estas sero solicitadas mais tardes princpio da localidade espacial.
  • Slide 15
  • Memria Cache
  • Slide 16
  • O desempenho do sistema s vai aumentar se a quantidade de hits for bem maior do que a quantidade de misses. Isto necessrio pois quando ocorre um miss h um gasto extra de tempo para trazer o conjunto de informaes da MP para a cache e depois enviar para a CPU a informao inicialmente solicitada por ela.
  • Slide 17
  • Memria Cache Estudos mostram que o ndice de acertos (hit rate) deve ser de 80% a 99%; Ou seja, em pelo menos 80% dos casos, a CPU consegue encontrar a informao na memria cache; A taxa de acerto pode chegar a 100%?
  • Slide 18
  • Memria Cache Tipos de memria cache: A mais usual a cache de MP; Existe tambm a cache de disco: nela a cache funciona de maneira idntica em relao aos dados que so buscado no disco, porm utilizada uma parte da MP para fazer as vezes de cache do disco.
  • Slide 19
  • Memria Cache Cache em mltiplos nveis: Os projetistas desenvolveram vrios tipos de cache de MP, com caractersticas de velocidade e capacidade de armazenamento diferente, formando uma verdadeira hierarquia de memrias cache; So utilizadas memrias SRAM; As caches so divididas em nveis, sendo os primeiros nveis mais prximos da CPU.
  • Slide 20
  • Memria Cache Cache nvel 1 (L1): sempre localizada no interior do processador, muito rpida, pouca capacidade; Cache nvel 2 (L2): localizada na placa- me. Atualmente os processadores j trazem consigo a L2 dentro do mesmo chip; Cache nvel 3 (L3): existe apenas para poucos processadores, normalmente externa ao chip;
  • Slide 21
  • Memria Cache CPU L1 L2 L3 MP
  • Slide 22
  • Memria Cache Como a memria cache no poder ter o mesmo tamanho da MP, surge uma questo? Onde colocar os dados que chegam para serem armazenados at que a CPU precise deles? O endereo da MP no serve mais como referncia direta....
  • Slide 23
  • Memria Cache preciso fazer uma associao entre os endereos da MP e as linhas da memria cache para que seja possvel procurar por um informao l. Em primeiro lugar, necessrio lembrar que a informao pedida pela cache MP vem em blocos. Logo, a MP deve ser dividida no mais em clulas, mas em blocos de clulas.
  • Slide 24
  • Memria Cache Bloco com 4 clulas Bloco com 8 clulas
  • Slide 25
  • Memria Cache Mapeamento associativo: Neste modelo, cada bloco da MP pode estar em qualquer uma das linhas da cache, pois no h uma posio pr-definida; Por exemplo, o bloco 147 pode estar na linha 35 da cache. Em uma outra vez, ele pode estar na linha 102. Como saber qual bloco est em cada uma das linhas da cache?
  • Slide 26
  • Memria Cache preciso guardar em cada linha, alm das informaes provenientes da MP, uma marcao (tag) informando o nmero do bloco que est ocupando aquela linha. Clula 0tagClula 1Clula 2Clula 3 Linhas (quadros)
  • Slide 27
  • Memria Cache Quando a CPU pede uma informao atravs de um endereo de MP, este endereo dividido em duas partes: A primeira parte indica em qual bloco est a informao desejada; A segunda parte indica qual a clula procurada dentro do bloco;
  • Slide 28
  • Memria Cache O dispositivo que controla a cache verifica se em alguma das linhas existe um tag idntico ao nmero do bloco pedido pela CPU; Se existir, a clula solicitada obtida da linha da cache e entregue CPU; Se no existir, a cache pega o bloco todo da MP e coloca-o em alguma linha que esteja disponvel. Depois repassa CPU a clula pedida.
  • Slide 29
  • Memria Cache Mapeamento direto: Neste modelo, cada bloco da MP pode aparecer em apenas uma nica linha da cache; Em outras palavras, existe um posicionamento prvio de onde cada bloco pode estar; Se o bloco no estiver na linha correspondente, ele no estar em mais lugar algum da cache;
  • Slide 30
  • Memria Cache Imagine, por simplificao, que a cache possui apenas duas linhas; Blocos de nmeros pares s podero estar na linha 0 da cache, enquanto blocos mpares s podero estar na linha 1 tagblocos MP
  • Slide 31
  • Memria Cache Para o que serve a tag? Para identificar qual dos blocos pares (ou mpares) est ocupando aquela linha da cache. Vrios blocos podem ocupar a mesma linha da cache, mas um mesmo bloco ou est na linha especfica para ele ou no est na cache. Por isto, esta tcnica chamada de mapeamento direto.
  • Slide 32
  • Memria Cache Na prtica, os linhas da cache no esto designadas a apenas linhas pares e mpares. Existiro vrios grupos de blocos dependendo da quantidade de linhas da cache.
  • Slide 33
  • Memria Cache tagblocos MP
  • Slide 34
  • Memria Cache Como calcular tudo isso? Primeiro, preciso lembrar que a funo da cache usar bem o princpio da localidade. Desta forma, as clulas da memria sero dividas em blocos.
  • Slide 35
  • Memria Cache Se a memria tem MP bytes e cada bloco ser composto por B bytes, a quantidade de blocos QB ser: QB = MP/B
  • Slide 36
  • Memria Cache Se a memria cache tem L linhas, isto significa que os blocos sero divididos em L grupos distintos. A quantida de blocos por grupo BG ser: BG = QB/L
  • Slide 37
  • Memria Cache A quantidade de bits que a tag precisa ter vai depender apenas da quantidade de blocos por grupo (BG). Bits = log 2 BG
  • Slide 38
  • Memria Cache Vamos a um exemplo prtico: A memria principal de um computador possui 4Gbytes. A cache possui 1024 linhas, podendo armazenar 64 bytes de dados em cada linha. A quantidade de blocos 4G/64 = 64M blocos.
  • Slide 39
  • Memria Cache Como h 64M blocos ao todo na memria e existem 1024 linhas de cache, cada linha poder conter 64k blocos (um de cada vez), pois: BG = QB/L BG = 64M/1024 = 64K
  • Slide 40
  • Memria Cache O tamanho do tag ser: Bits = log 2 (64K) = 16 bits, pois 2 16 = 64K.
  • Slide 41
  • Memria Cache Nesse sistema, um endereo de memria ser composto por 32 bits, pois 2 32 = 4G. Quando a CPU pedir um dado na memria atravs de um endereo assim, como a cache saber se tem o dado ou no? O endereo precisa ser dividido em pedaos para ser analisado.
  • Slide 42
  • Memria Cache 16 bits10 bits6 bits Indica em qual das linhas da cache pode estar o dado buscado Indica o nmero especfico do bloco a ser buscado na linha da cache Indica qual das clulas dentro do bloco a requerida pela CPU
  • Slide 43
  • Memria Cache Vamos imaginar que a CPU pediu cache abaixo o dado atravs do endereo 0000000000001010 0010010010 001001 34 144 78 145 10 146 31 147 123 148 90 149
  • Slide 44
  • Memria Cache Mapeamento associativo por conjuntos: Esta tcnica uma mistura das duas anteriores: Agora, cada linha da cache pode conter mais de um bloco. O que vai acontecer que diversos blocos (conjuntos) podem estar relacionados com a mesma linha. Quando a linha for descoberta, ser preciso ainda analisar cada conjunto de blocos para saber se o bloco requerido est ou no na cache.
  • Slide 45
  • Memria Cache tag quadro Quadro 1Quadro 0Quadro 2Quadro 3 Quadro 5Quadro 4Quadro 6Quadro 7 Quadro 9Quadro 8Quadro 10Quadro 11 Quadro 13Quadro 12Quadro 14Quadro 15 Linha 0 Linha 1 Linha 2 Linha 3
  • Slide 46
  • Memria Cache Para a cache funcionar corretamente ainda necessrio pensar no que acontece se a cache estiver cheia, ou seja, se for preciso trazer um dado da MP e colocar em uma linha da cache que j tenha um dado posicionado. Isto depende da tcnica escolhida: No mapeamento direto, o novo dado s pode ocupar um nico lugar. Logo, o dado antigo dever ser substitudo.
  • Slide 47
  • Memria Cache No mapeamento associativo e no associativo por conjunto, ser necessrio escolher um bloco para ser retirado. Existem alguns critrios: LRU (least recently used) o controlador da cache escolhe o bloco que foi utilizado h mais tempo. Este critrio tem por base o princpio da localida temporal
  • Slide 48
  • Memria Cache Fila o sistema escolhe para ser retirado, o bloco que foi colocado primeiro na cache, independente do uso dele; LFU (least frenquently used) o sistema escolhe o bloco que foi menos utilizado (acessado); Escolha aleatria: um bloco qualquer escolhido independente de outros critrios;
  • Slide 49
  • Memria Cache Um ltimo ponto precisa ser levado em considerao: Estivemos sempre preocupados em como fazer para obter (ler) um dado da cache e repassar para a CPU; A memria, como vimos algumas vezes, permite que se faam dois tipos de operaes: leitura e escrita; Quando a CPU precisar gravar um novo dado na MP, como isso acontecer?
  • Slide 50
  • Memria Cache Se o dado for salvo diretamente, sem passar pela cache, haver um problema de consistncia: Como assim? Se o dado for salvo apenas na cache, tambm poder haver problemas. Qual a soluo?
  • Slide 51
  • Memria Cache Devemos levar em considerao dois fatores: A MP pode ser acessada tanto pela CPU quanto por componentes E/S. Um dado pode ter sido alterado na cache e no na MP (desatualizada). Um componente E/S pode ter alterado o dado diretamente na MP e no na cache (desatualizada).
  • Slide 52
  • Memria Cache Uma mesma MP pode ser acessada por diversas CPUs, cada uma contendo sua prpria cache. A alterao feita em uma cache deve ser refletida na MP e, consequentemente, nas demais caches. Existem alguma tcnicas conhecidas para estes problemas.
  • Slide 53
  • Memria Cache Escrita em ambas (write through): Cada escrita em uma palavra da cache resulta na escrita da palavra correspondente da MP. Se houver outras cache, elas tambm sero alteradas; Escrita somente no retorno (write back): No faz atualizao simultnea, mas somente quando o bloco for retirado da cache e se ele tiver sido alterado.
  • Slide 54
  • Memria Cache Escrita uma nica vez (write once): O bloco da MP atualizado quando o bloco da cache for alterado pela primeira vez. Os demais componentes so alertados de que houve uma alterao e so impedidos de usar o dado. Outras alteraes ocorrem apenas na cache e a MP s atualizada quando o bloco sair da cache.
  • Slide 55
  • Exerccio