• Nenhum resultado encontrado

Aula07

N/A
N/A
Protected

Academic year: 2021

Share "Aula07"

Copied!
72
0
0

Texto

(1)

ORGANIZAÇÃO E

ARQUITETURA DE

COMPUTADORES I

Aula 07

(2)

INTRODUÇÃO

Os programas gastam a maior parte do tempo

acessando a memória.

Programadores gostariam de dispor de quantidade

ilimitada de memória com acesso instantâneo.

O projeto do sistema de memória segue alguns

princípios os quais tentam dar a ilusão ao

programador de que ele dispõe de uma grande

quantidade de memória com tempo de acesso

pequeno.

(3)

INTRODUÇÃO

Exemplificando...

Suponha que você seja um estudante fazendo um trabalho sobre

os importantes desenvolvimentos históricos no hardware dos computadores.

 Você descobre livros falando sobre vários computadores

importantes, mas nenhum fala sobre o EDSAC.

 Você precisa voltar as prateleiras e procurar um livro que fale sobre

o EDSAC.

 Ao encontrar o livro que precisa, você volta à sua mesa e continua

a pesquisa com os vários livros a sua frente.

Você gasta muito menos tempo com a pesquisa, tendo os livros já

sobre a mesa, do que se tivesse apenas um livro e precisasse voltar constantemente às estantes para devolvê-lo e pegar outro.

(4)

INTRODUÇÃO

Podemos agora fazer uma analogia com a memória.

Assim como você não precisou acessar todos os livros

da biblioteca ao mesmo tempo, com igual probabilidade

um programa não acessa todo o seu código ou dados.

Se um programa precisasse acessar todo o seu código

ao mesmo tempo, seria impossível tornar rápido a

maioria dos acessos à memória e ainda ter memória

grande nos computadores.

Assim como seria impossível você colocar todos os

livros da biblioteca em sua mesa e ainda encontrar o

desejado rapidamente.

(5)

INTRODUÇÃO

Esse princípio visto é chamado de princípio da localidade.

 O princípio da localidade diz que os programas acessam uma

parte relativamente pequena do seu espaço de endereçamento em qualquer instante do tempo.

 Há dois tipos diferentes de localidade:

Localidade temporal – se um item é referenciado, ele tenderá a ser

referenciado em breve.

 A maioria dos programas contém laços (instruções e dados do laço tendem a ser acessados de maneira repetitiva).

Localidade espacial – se um item é referenciado, os itens cujos

endereços estão próximos tenderão a ser referenciados em breve.

 Os itens de uma matriz e de registros nos programas, por exemplo, são armazenados de maneira seqüencial.

(6)

INTRODUÇÃO

Tiramos vantagem do princípio da localidade

implementando a memória de um computador como

uma hierarquia de memória.

Consiste em múltiplos níveis de memória com diferentes

velocidades e tamanhos.

 As memórias mais rápidas são mais caras por bit do que as

(7)

INTRODUÇÃO

Três tecnologias são usadas hoje na construção das

hierarquias de memória:

Memória principal (implementada por meio de DRAM);

Memórias cache (implementadas por meio de SRAM); e

Disco magnético.

(8)

INTRODUÇÃO

O tempo de acesso e o preço por bit variam muito

(9)

INTRODUÇÃO

Devido a essas diferenças no custo e no tempo de

acesso, é vantajoso construir memória como uma

hierarquia de níveis.

Velocidad

e

Tamanho

Custo

(US$/bit)

Tecnologia

atual

Mais rápida

Menor

Mais alto

SRAM

DRAM

Mais lenta

Maior

Mais baixo

Disco

Magnético

CPU

Memória Memória

(10)

INTRODUÇÃO

O sistema de memória é organizado como uma

hierarquia:

Um nível mais próximo do processador em geral é um

subconjunto de qualquer nível mais distante, e todos os dados são armazenados no nível mais baixo.

 Além disso, conforme nos afastamos do processador, os

(11)
(12)

INTRODUÇÃO

Definições:

A princípio, a hierarquia de memória pode ter qualquer

número de níveis.

 Os dados são copiados sempre entre dois níveis adjacentes

(i e i + 1, onde i está mais próximo do processador).

 Chamaremos i de superior (mais próximo do processador) e i

(13)

INTRODUÇÃO

Definições:

Bloco – unidade de informação mínima que pode estar

(14)

INTRODUÇÃO

Definições

Se a informação solicitada pelo processador estiver presente

em algum bloco do nível superior, ocorre um acerto.

 Se a informação solicitada pelo processador não puder ser

encontrada no nível superior, a tentativa de encontrá-la gera uma falha.

Quando ocorre uma falha, o nível inferior é então acessado

para recuperar o bloco com os dados requisitados.

 Exemplificando com a analogia da biblioteca, se você não

encontra o livro que precisa em cima da mesa, você vai até as estantes para encontrá-lo.

(15)

INTRODUÇÃO

Definições

A taxa de acertos corresponde à fração dos acessos à

memória encontrados no nível superior (com freqüência é usada como medida de desempenho da hierarquia de memória).

A taxa de falhas (1 – taxa de acertos) é a proporção dos

acessos à memória não encontrados no nível superior.

Tempo de acerto é o tempo necessário para acessar o nível

superior da hierarquia, que inclui o tempo necessário para determinar se o acesso é um acerto ou uma falha (tempo necessário para consultar os livros na mesa).

(16)

INTRODUÇÃO

Penalidade por falha é o tempo para substituir um bloco no

nível superior pelo bloco correspondente do nível anterior que contém a informação desejada, mais o tempo para transferir esse bloco para o processador.

 Como o nível superior é menor e mais rápido, o tempo de

acerto será muito menor do que o tempo para acessar o próximo nível da hierarquia.

O sistema de memória é um importante fator na

determinação do desempenho de um computador,

pois todos os programas gastam muito do seu tempo

acessando a memória.

(17)

PRINCÍPIOS BÁSICOS DE CACHE

Cache – em inglês, lugar seguro para esconder ou

guardar algo.

Nome usado para designar o nível de memória entre o

processador e a memória principal.

Foi usado pela primeira vez pela máquina que

introduziu este nível de memória.

A cache explora o princípio da localidade.

Hoje em dia usa-se o nome cache para designar

qualquer memória que explore o princípio da

localidade.

(18)

PRINCÍPIOS BÁSICOS DE CACHE

Assumiremos as seguintes características de um

sistema de memória extremamente simples:

O processador sempre requisita uma única palavra;

Existe apenas um nível de memória cache (L1); e

(19)

PRINCÍPIOS BÁSICOS DE CACHE

A figura abaixo mostra essa cache simples, antes e

depois de requisitar um item de dados que não está

inicialmente na cache:

(20)

PRINCÍPIOS BÁSICOS DE CACHE

Como sabemos então se o item de dados está na

cache? Se ele estiver, como encontrá-lo?

 Cada word pode ficar exatamente em um lugar na cache,

então é fácil encontrá-la se ela estiver lá.

 Atribui-se um endereço com base no endereço da palavra na

memória principal.

 Mapeamento direto – estrutura da cache onde cada local da

memória é mapeado diretamente para um local exato na cache.

 A maioria das caches que usa mapeamento direto o faz usando o

(21)

PRINCÍPIOS BÁSICOS DE CACHE

Se o número de entradas da cache for uma potência

de dois, então o módulo pode ser calculado

simplesmente

usando

os

log

2

bits

menos

significativos.

A cache pode então ser acessada diretamente com os

bits menos significativos.

Por exemplo, em uma cache com oito words, um

endereço X é mapeado para a word de cache X

módulo 8. Ou seja, os log

2

(8) = 3 bits menos

(22)
(23)

PRINCÍPIOS BÁSICOS DE CACHE

Se uma “entrada” da cache pode armazenar o

conteúdo de diversos endereços da memória, como

identificar se o dado armazenado na cache

corresponde ao solicitado? Como sabermos se o dado

solicitado está na cache ou não?

Solução: atribuir à cache um conjunto de rótulos (tags).

Os rótulos são usados em conjunto com o endereço do

mapeamento, de modo a compor o endereço completo, com relação à memória principal.

 O rótulo precisa conter apenas a parte superior do endereço,

correspondente aos bits que não são usados como índice para a cache.

(24)
(25)

PRINCÍPIOS BÁSICOS DE CACHE

E como reconhecer se um bloco da cache possui uma

informação válida? (Quando um processador é

iniciado, por exemplo, a cache não tem dados válidos

e os campos de tag não terão significado)

Solução: incluir um bit de validade.

Se o bit de validade = 0, a informação contida naquele bloco

(26)
(27)

PRINCÍPIOS BÁSICOS DE CACHE

Acessando uma cache (para leitura):

(28)

PRINCÍPIOS BÁSICOS DE CACHE

2. Referência ao endereço 10110: falha

(29)

PRINCÍPIOS BÁSICOS DE CACHE

2. Referência ao endereço 10110: falha: tratamento da falha

Tratamento da falha: buscar no nível inferior (neste caso, a memória principal) o bloco com endereço 10110.

(30)

PRINCÍPIOS BÁSICOS DE CACHE

3. Referência ao endereço 11010: falha

(31)

PRINCÍPIOS BÁSICOS DE CACHE

3. Referência ao endereço 11010: falha: tratamento da falha

Tratamento da falha: buscar no nível inferior (neste caso, a memória principal) o bloco com endereço 11010.

(32)

PRINCÍPIOS BÁSICOS DE CACHE

4. Referência ao endereço 10000: falha

(33)

PRINCÍPIOS BÁSICOS DE CACHE

4. Referência ao endereço 10000: falha: tratamento da falha

Tratamento da falha: buscar no nível inferior (neste caso, a memória principal) o bloco com endereço 10000.

(34)

PRINCÍPIOS BÁSICOS DE CACHE

5. Referência ao endereço 00011: falha

(35)

PRINCÍPIOS BÁSICOS DE CACHE

5. Referência ao endereço 00011: falha: tratamento da falha

Tratamento da falha: buscar no nível inferior (neste caso, a memória principal) o bloco com endereço 00011.

(36)

PRINCÍPIOS BÁSICOS DE CACHE

6. Referência ao endereço 10010: falha

(37)

PRINCÍPIOS BÁSICOS DE CACHE

6. Referência ao endereço 10010: falha: tratamento da falha

Tratamento da falha: buscar no nível inferior (neste caso, a memória principal) o bloco com endereço 10010, escrevendo-o na posição 010 da cache.

(38)

PRINCÍPIOS BÁSICOS DE CACHE

Um endereço referenciado é dividido em:

Um índice de cache, usado para selecionar o bloco;

Um campo tag, usado para ser comparado com o valor do

campo tag da cache.

 20 bits podem ser usados para serem comparados com a tag.

Se a tag e esses 20 bits forem iguais e o bit de validade for 1, então a requisição é um acerto, caso contrário, ocorre uma falha.

Os dois campos juntos especificam de modo único o

(39)
(40)

PRINCÍPIOS BÁSICOS DE CACHE

Tratando falhas de cache

O Bloco de Controle deve tanto detectar quanto processar a

falha (buscando os dados na memória principal ou em outra cache imediatamente abaixo na hierarquia).

Se a cache informar um acerto:

 O processamento segue (como se a informação tivesse sido

(41)

PRINCÍPIOS BÁSICOS DE CACHE

 Se a cache informar uma falha:

 O processador deve ser parado;

 Um controlador separado ajuda no tratamento das falhas geradas

no acesso à cache, comandando a busca da informação (bloco) na memória principal ou na cache de próximo nível.

 Uma vez que o dado tenha sido obtido, a execução é reiniciada no

ciclo que gerou a falha no acesso a cache.

 O processamento de uma falha cria uma parada no

processamento similar às paradas do pipeline: todos os registradores temporários e visíveis ao programador são congelados, enquanto a informação é transferida da memória.

(42)

PRINCÍPIOS BÁSICOS DE CACHE

Tratando escritas

As escritas funcionam um pouco diferente.

Suponha que na execução de uma instrução store o dado

seja escrito somente na cache de dados. Isto causará uma inconsistência, pois após a escrita na cache, a memória principal terá um valor diferente daquele que foi escrito na cache.

 Write-trough: uma solução é escrever o dado tanto na cache

quanto na memória principal.

Embora este esquema trate das escritas de maneira muito

(43)

PRINCÍPIOS BÁSICOS DE CACHE

Toda escrita faz com que os dados sejam escritos na memória

principal, o que leva muito tempo.

Solução: usar um buffer de escrita:

 Ele armazena o dado enquanto ele aguarda para ser escrito na memória.

 Após escrever o dado na cache e no buffer de escrita, o processador pode

continuar a execução das instruções.

 Quando a escrita na memória principal é concluída, a entrada no buffer de

escrita é liberada.

 Se o buffer de escrita estiver cheio quando o processador tiver que

executar uma instrução de escrita, o processador precisa parar, até que haja posição disponível no buffer.

 Se a velocidade da memória para completar as escritas for menor que a

taxa à qual o processador está gerando as escritas, nenhum buffer (por maior que seja) conseguirá resolver o problema.

(44)

PRINCÍPIOS BÁSICOS DE CACHE

Uma alternativa para um esquema write-trough é um

esquema chamado write-back.

Neste esquema, quando ocorre uma escrita, o novo valor é

escrito apenas no bloco da cache.

 O bloco é escrito na memória principal somente quando ele

tiver que ser substituído na cache.

 Este esquema pode aumentar o desempenho,

principalmente quando o processador puder gerar escritas tão rapidamente quanto estas puderem ser tratadas pela memória principal.

(45)

UMA CACHE DE EXEMPLO: O

PROCESSADOR INTRINSITY FASTMATH

É um microprocessador embutido veloz que usa a

arquitetura MIPS e uma implementação de cache

simples.

Possui um pipeline de 12 estágios.

Quando está operando na velocidade de pico, o

processador pode requisitar uma word de instrução e

uma word de dados em cada clock.

São usadas caches de instruções e de dados

separadas.

(46)

UMA CACHE DE EXEMPLO: O

PROCESSADOR INTRINSITY FASTMATH

As requisições de leitura são simples.

As etapas para uma requisição de leitura para

qualquer uma das caches são as seguintes:

1. Enviar o endereço para a cache apropriada;

2. Se a cache sinalizar acerto, a word requisitada estará

disponível nas linhas de dados.

3. Se a cache sinalizar falha, é enviado o endereço para a

memória principal. Quando a memória retorna com os dados, ele é escrito na cache e depois é lido para atender à requisição.

(47)

UMA CACHE DE EXEMPLO: O

PROCESSADOR INTRINSITY FASTMATH

Para requisições de escrita ele oferece write-through e

write-back, deixando a cargo do sistema operacional

decidir qual estratégia usar para cada aplicação.

O buffer de escrita tem capacidade para uma entrada

(48)

PROJETANDO O SISTEMA DE

MEMÓRIA PARA SUPORTAR CACHES

As falhas no acesso às caches são resolvidas pela

memória principal, que é construída com DRAMs.

O tempo de acesso nas DRAMs é maior do que nas

SRAMs, logo é difícil reduzir a latência da busca da

primeira palavra da memória principal.

Mas podemos reduzir a penalidade por falha se

aumentarmos a banda passante da memória principal

para a cache.

Essa redução permite que sejam usados blocos

maiores enquanto a penalidade por falha continua

semelhante àquela para um bloco menor.

(49)

PROJETANDO O SISTEMA DE

MEMÓRIA PARA SUPORTAR CACHES

O processador é conectado à memória por meio de um

barramento.

A velocidade do barramento geralmente é muito

menor do que a do processador, o que afeta a

penalidade de falha.

Vamos definir um conjunto hipotético de tempos de

acesso à memória:

 1 ciclo de clock para enviar o endereço;

15 ciclos de clock para cada acesso a DRAM (tempo de

latência do acesso);

 1 ciclo de clock para a transferência de uma palavra de

(50)

PROJETANDO O SISTEMA DE

MEMÓRIA PARA SUPORTAR CACHES

(51)

PROJETANDO O SISTEMA DE

MEMÓRIA PARA SUPORTAR CACHES

1ª opção:

Segue o que temos considerado, a memória possui uma word

de largura e todos os acessos são feitos seqüencialmente.

2ª opção:

 Aumenta a largura de banda para a memória alargando a

memória e os barramentos entre o processador e a memória; o que permite acessos paralelos a todas as words do bloco.

3ª opção:

Aumenta a largura de banda alargando a memória mas não o

barramento de interconexão, evitando-se assim o custo da latência de acesso mais de uma vez.

(52)

PROJETANDO O SISTEMA DE

MEMÓRIA PARA SUPORTAR CACHES

Vamos calcular então, para cada um dos casos, o

custo da penalidade por falta versus o número de

bytes transferidos por ciclo de clock.

Penalidade por falha é o tempo para substituir um bloco no

nível superior pelo bloco correspondente do nível anterior que contém a informação desejada, mais o tempo para transferir esse bloco para o processador.

Iremos considerar os tempos de acesso dados

anteriormente e supor que a cache possui bloco com

4 palavras.

(53)

PROJETANDO O SISTEMA DE

MEMÓRIA PARA SUPORTAR CACHES

O tamanho da DRAM cresce quatro vezes a cada três

(54)

MEDINDO E MELHORANDO O

DESEMPENHO DA CACHE

(55)

MEDINDO E MELHORANDO O

DESEMPENHO DA CACHE

(56)

MEDINDO E MELHORANDO O

DESEMPENHO DA CACHE

(57)

MEDINDO E MELHORANDO O

DESEMPENHO DA CACHE

Reduzindo as falhas de cache com um posicionamento

de blocos mais flexível

Mapeamento direto (estudado até agora):

 Um bloco só pode ser colocado em exatamente um lugar da

cache.

 “Existe um caminho, mapeado previamente, de qualquer

endereço de bloco da memória principal para uma única posição da cache.”

 Veremos que existem diversos tipos de mapeamento, o

(58)

MEDINDO E MELHORANDO O

DESEMPENHO DA CACHE

 Mapeamento totalmente associativo

 É o outro extremo dos tipos de mapeamento;

 Um bloco da memória principal pode ser colocado em qualquer

posição da cache;

 Para encontrar um determinado bloco todas as entradas da cache

precisam ser pesquisadas, pois um bloco pode estar posicionado em qualquer uma delas;

 Para reduzir o tempo de pesquisa ela é feita em paralelo, usando

um comparador para cada entrada da cache.

 O custo do hardware é alto: tal esquema é atrativo somente para

(59)

MEDINDO E MELHORANDO O

DESEMPENHO DA CACHE

 Mapeamento associativo por conjunto

 Fica entre os dois tipos anteriores;

 Existe um número fixo de posições na cache (no mínimo duas) nas

quais cada bloco pode ser colocado;

 Cache associativa por conjunto de n vias: uma cache associativa por

conjunto com n locais para um bloco.

 Consiste em diversos conjuntos, cada um consistindo em n blocos.

 Cada bloco na memória é mapeado para um conjunto único na cache,

determinado pelo campo índice, e um bloco pode ser colocado em qualquer elemento desse conjunto.

 O conjunto que contém o bloco da memória é dado por

(60)

MEDINDO E MELHORANDO O

DESEMPENHO DA CACHE

(61)

MEDINDO E MELHORANDO O

DESEMPENHO DA CACHE

 Podemos encarar as estratégias de colocação de blocos na cache

(62)

MEDINDO E MELHORANDO O

DESEMPENHO DA CACHE

O aumento do grau de associatividade resulta, em geral,

na redução da taxa de falhas.

A desvantagem é o aumento do tempo de tratamento do

acerto.

Exemplo:

 Temos a nossa disposição três pequenas caches, cada qual com

quatro blocos de uma palavra:

 Uma mapeada diretamente;

 Outra associativa por conjunto de duas posições;  Outra associativa por conjunto de quatro posições;

Encontre o número de falhas em cada uma delas, considerando

(63)

MEDINDO E MELHORANDO O

DESEMPENHO DA CACHE

 Na cache mapeada diretamente, os blocos serão mapeados

para as seguintes entradas na cache:

Acompanhando o comportamento da cache nas referências

(64)

MEDINDO E MELHORANDO O

DESEMPENHO DA CACHE

Na cache associativa por conjunto de 2 posições, os blocos

serão mapeados para os seguintes conjuntos da cache:

 Acompanhando o comportamento da cache nas referências

(65)

MEDINDO E MELHORANDO O

DESEMPENHO DA CACHE

 Na cache associativa por conjunto de 4 posições (isto é,

totalmente associativa), os blocos podem ser mapeados para qualquer posição da cache.

Acompanhando o comportamento da cache nas referências

(66)

MEDINDO E MELHORANDO O

DESEMPENHO DA CACHE

Localizando um bloco na cache

Vamos considerar a tarefa de encontrar um bloco em uma cache

que é associativa por conjunto.

Cada bloco em uma cache associativa por conjunto inclui uma tag

de endereço que fornece o endereço do bloco. A tag de cada bloco de cache dentro do conjunto apropriado é verificada para ver se corresponde ao endereço de bloco vindo do processador.

 O endereço é decomposto em:

O valor de índice é utilizado para selecionar o conjunto contendo o

endereço de interesse e as tags de todos os blocos no conjunto precisam ser pesquisadas. As tags são pesquisadas em paralelo para ganho de velocidade.

(67)

MEDINDO E MELHORANDO O

DESEMPENHO DA CACHE

(68)

MEDINDO E MELHORANDO O

DESEMPENHO DA CACHE

Escolhendo que bloco substituir

Em uma cache diretamente mapeada, quando ocorre uma

falha o bloco requisitado só pode entrar em exatamente uma posição, por isso o bloco que ocupa essa posição é substituído.

Em uma cache associativa, podemos escolher onde colocar

o bloco requisitado.

 Em uma cache totalmente associativa, todos os blocos são

candidatos à substituição;

 Em uma cache associativa por conjunto, precisamos escolher

(69)

MEDINDO E MELHORANDO O

DESEMPENHO DA CACHE

 Esquema LRU

 Neste esquema o bloco substituído é aquele que não foi usado a

mais tempo.

 A substituição é implementada monitorando quando cada

elemento em um conjunto foi usado em relação a outros elementos no conjunto.

 Para uma cache associativa por conjunto de duas vias, o controle

pode ser implementado mantendo um único bit em cada conjunto e definindo o bit para indicar um elemento sempre que ele é referenciado.

(70)

MEDINDO E MELHORANDO O

DESEMPENHO DA CACHE

Reduzindo a penalidade de falha usando caches multiníveis

 Todos os computadores modernos fazem uso de cache.

 Para diminuir a diferença entre as rápidas velocidades de clock dos

processadores modernos e o tempo relativamente longo de acesso as DRAMs, muitos processadores suportam um nível adicional de cache.

 Essa cache de segundo nível é acessada sempre que ocorre uma

falha na cache primária.

 Se a cache de segundo nível contiver os dados desejados, a penalidade

de falha será menor que o tempo de acesso à memória principal;

 Se a cache de segundo nível também não tiver os dados, um acesso à

memória principal será necessário e uma penalidade de falha maior será observada.

(71)

MEDINDO E MELHORANDO O

DESEMPENHO DA CACHE

Considerações:

Cache 1 – integrada no microprocessador;

Cache 2 – fora do processador, em chips de memória DRAM;

Cacpacidade cache 2 > capacidade cache 1;

(72)

PRÓXIMA AULA

Trazer xerox :

Cap. 7 – Grande e rápida: explorando a hierarquia de

memória

Tópicos 7.1, 7.2 e 7.3

 Livro:

 Organização e Projeto de Computadores – A interface

hardware/software

Referências

Documentos relacionados

Assim como Bejarano e Rosa (2010) afirmam que não precisamos ter receio de ensinar Química no ensino fundamental para melhor entender o mundo em que vivemos,

Compreendemos que a inclusão escolar poderá se concretizar pelo desenvolvimento de culturas, políticas e práticas (SANTOS, 2003) que permitem o

A associação do presidente Fernando Collor com Paulo César Farias (PC Farias), seu tesoureiro de campanha e amigo pessoal, também foi fartamente explorada pela caricatura e

Realizar a manipulação, o armazenamento e o processamento dessa massa enorme de dados utilizando os bancos de dados relacionais se mostrou ineficiente, pois o

Por meio dos registros realizados no estudo de levantamento e identificação de Felinos em um remanescente de Mata atlântica, uma região de mata secundária

No âmbito da gestão visual de projetos, a utilização do modelo LCC promove recursos do trabalho (apoio psicossocial, feedback de desempenho, clareza de tarefas, orientação