Você está na página 1de 131

Universidade Federal de Santa Catarina

Bacharelado em Tecnologias da Informação e


Comunicação

ARA 7244 – Estrutura de Computadores

UNIDADE 6 - Hierarquia de Memória

Prof. Juarez Bento da Silva, Dr. Eng.


Fevereiro - 2017
1
UNIDADE 5 – UNIDADE 6 - Hierarquia de Memória
– Organização do subsistema de memória e conceito de
hierarquia de memória;
– A memória principal e seus parâmetros
fundamentais;
– Memória cache;
– Memória secundária;
– Memória Virtual.

11/23/2020 Parte 6.2. 2


Imagem de memória de um processo

– Processo: programa em execução.


– Imagem de memória: conjunto de endereços de memória
atribuídos ao programa que em execução.

Instruções

Imagem de Dados Endereços reservados


memória de para o incremento das
um programa em seções de dados e da
execução. pilha.

Pilha

11/23/2020 4
A necessidade de uma Hierarquia
de Memória

Processador
Desempenho Relativo

Memória

Ano calendário
11/23/2020 Parte 6.1. 5
Hierarquia de memória
– É a reação natural a localidade e a tecnologia.
– O principio da localidade e a diretriz que o hardware
menor é mais rápido mantém o conceito de uma
hierarquia baseada em diferentes localidades e
tamanhos.
– Organizada em vários níveis, cada um menor, mais caro
e mais rápido que o anterior.
– Todos os dados de um nível se encontram também no
nível seguinte, e todos os dados desse nível inferior se
encontram também no seguinte até o extremo inferior
da hierarquia.

11/23/2020 Parte 6.1. 6


Hierarquia de memória

Nível Alto
100s Bytes: 0,25 – 0,5ns Registradores Programa 1-8B
Pr. Vel.
Instruções/Operandos

Kbytes: 0,5 – 25ns Cache Crtl Cache 8-128B


Blocos

Gbytes: 10 – 25ns Memória Principal SO 512-16KB


Páginas

Tbytes: 1 – 10ms Discos Magnéticos Usuário MB

Arquivos
Tbytes ++: Seg. – Tam.
Unidades de Fita
min.
Nível Baixo

11/23/2020 Parte 6.1. 7


Hierarquia de Memória

– Movimento de dados na hierarquia de memória. Memória


Virtual

Memória Principal

Cache
Registradores

Palavras
(transferidas Linhas
automaticament (transferidas Páginas
e em uma falha automaticamente (transferidas
de página) em uma falha de explicitamente por
acesso à cache) meio de
carga/armazenam
ento)

11/23/2020 8
A necessidade de uma Hierarquia
de Memória
– Latência típica, em número de ciclos, para processador
com clock de 4GHz.

L1 Memória Principal Memória Secundária


eDRAM
(SRAM)
DRAM SSD HDD

11/23/2020 Parte 6.1. 9


eDRAM
– eDRAM significa “embedded DRAM” é uma DRAM (baseada em
capacitor) integrada dentro de um ASIC (Application-Specific
Integrated Circuit) ou processador.
– O custo por bit-é superior à dos chips DRAM, mas em muitas
aplicações as vantagens de colocar a eDRAM no mesmo chip que o
processador supera a desvantagem de custo de desempenho em
comparação com a memória externa.
– eDRAM é usada nos processadores IBM POWER7, Intel Haswell
CPUs com GT3e (processador gráfico integrado e muitos consoles
para games e outros dispositivos incluindo Sony PlayStation, Sony
PlayStation Portable, Nintendo GameCube, Nintendo Wii, Apple
iPhone, Microsoft Zune HD e Microsoft's Xbox 360.

11/23/2020 Parte 6.1. 10


Hierarquia de memória
– Uma hierarquia de memória consiste de múltiplos níveis de
memória com diferentes velocidades e tamanhos.
– As memórias mais rápidas são as pequenas e vice-versa.
– Uma hierarquia multinível pode ser vista como uma hierarquia
de 2 níveis porque em um determinado instante os dados são
copiados somente entre níveis adjacentes.
– A memória no nível superior é a mais próxima a CPU, menor e
mais rápida que a memória no nível inferior.

11/23/2020 Parte 6.1. 11


Exemplos de hierarquia de memória.

CPU
CPU
D I

L2
Cache

RAM Dinâmica
RAM Dinâmica
Disco

Unidade de Disco
Rede

11/23/2020 Parte 6.1. 12


Intel Haswell-E

13
Intel Haswell-E

14
Hierarquia de Memória – Chave do
Êxito
– Diminuir a frequência de acesso.
– A base: o princípio da localidade (referências próximas).
– Durante a execução de um programa, as referências a memória
por parte do processador, tanto para as instruções como para os
dados, tendem a estarem agrupadas.
– Motivo:
– Os programas contém “loops” e sub-rotinas interativas. São
produzidas referências repetitivas para um conjunto de
instruções. Durante um longo período, os agrupamentos
mudam, porém, em um curto período o processador trabalho
com grupos fixos de referências para a memória.

11/23/2020 Parte 6.1. 15


Hierarquia de Memória – Chave do
Êxito
– Localidade Espacial e Temporal:
– O principio da localidade estabelece que os programas
acessam a uma parte relativamente pequena de seu espaço
de endereços em qualquer instante de tempo.
– Localidade Temporal: Se um elemento é referenciado em um
instante dado de tempo, voltará a ser referenciado em
seguida.
– Localidade Espacial: Se um elemento é referenciado, os
elementos cujos endereços estão próximos tenderão a ser
referenciados em seguida.

11/23/2020 Parte 6.1. 16


Memória Principal

Processador e Memória Principal Armazenamento


Caches (SSD/HDD)

– A Memória Principal é um componente crítico de todos os sistemas


computacionais: servidores, dispositivos móveis, sistemas embarcados,
desktop, sensores, etc.
– O Sistema de Memória Principal é escalar (em tamanho, tecnologia,
eficiência, custo e gestão) para manter o aumento de desempenho e os
benefícios da evolução tecnológica.
17
11/23/2020 Parte 6.1.
Ex.
– Com o objetivo de melhorar a velocidade da
unidade de memória de um computador e a
velocidade dos registradores de sua CPU, a um
custo razoável, indique qual das seguintes
alternativas seria a mais adequada:
a) Aumentar o número de registradores da CPU.
b) Fazer uso de uma memória cache.
c) Aumentar a capacidade dos discos magnéticos.
d) Nenhuma das anteriores.
Ex. - Resposta
– Para resolver este problema deve-se relembrar as
propriedades de um sistema hierárquico de memória.
– Afirmação A: é falsa já que aumentar o número de
registradores da CPU não influi na velocidade da unidade
de memória principal, além disso, é muito caro.
– Afirmação B: é verdadeira, já que incluir uma memória
cache no sistema diminui o tempo médio de acesso à
memória e, portanto aumenta a velocidade. Além disso,
apresenta um custo razoável.
– Afirmação C: é falsa, pois aumentar a capacidade dos
discos magnéticos não influi em nada na velocidade da
unidade de memória.
– Afirmação D: é falsa, pois a afirmação B é verdadeira.
Memória RAM
– Memória RAM - Random Access Memory:
– Tempo de acesso idêntico a qualquer endereço de célula.
– Escrita/leitura por sinais elétricos.
– Voláteis: perdem o dado se a energia externa for desligada.
– Armazenamento temporário.
– Dinâmica ou Estática.

Como descobrir qual a memória RAM da sua máquina?


Programa: http://www.hwinfo.com/

11/23/2020 Parte 6.1. 20


SRAM vs DRAM
– Célula típica SRAM
Vcc
Linha da Palavra

Linha
de Bit
Complemento da Linha de Bit
11/23/2020 Parte 6.1. 21
Memória SRAM
– A memória de acesso aleatório (Static Random – Access
Memory ,SRAM) é, basicamente, um grande vetor de células de
armazenamento acessadas como registradores.
– Construção mais complexa.
– Tamanho cerca de 6 a 10x mais que a DRAM por bit.
– Mais caras.
– Um célula de memória SRAM tipicamente requer de 4 a 6
transistores por bit e mantém o dado armazenado
enquanto a alimentação é mantida.
– Exemplo de uso: Memória cache.

11/23/2020 Parte 6.1. 22


SRAM vs DRAM
– Célula típica DRAM Linha da Palavra
– Célula DRAM com um único
transistor, a qual é
Transistor de
consideravelmente mais simples
Passagem
que a célula SRAM, levando as
pastilhas de memória DRAM mais
densas e com maior capacidade.

Capacitor

Linha
de Bit

11/23/2020 Parte 6.1. 23


Memória DRAM
– A memória de acesso aleatório dinâmica (Dynamic
Random – Access Memory, DRAM).
– Construção mais simples.
– Usa apenas um transistor por bit e deve ser
periodicamente restaurada (refresh), para prevenir a
perda do dado armazenado.
– Mais barata.
– Mais lenta.
– Exemplo de uso: Memória Principal.

11/23/2020 Parte 6.1. 24


DDR3 SDRAM

– As memórias DDR 3 são uma evolução das DDR 2, e proporcionam


significativas melhoras no rendimento em baixos níveis de
voltagem, o que leva a uma diminuição do consumo. Os módulos
DIMM DDR 3 tem 240 pinos, mesmo número da DDR 2
– Alguns tipos disponíveis são:
– PC3-6400 ou DDR3-800: funciona no máx. de 800 MHz.
– PC3-8500 ou DDR3-1066: funciona no máx. de 1066,6 MHz.
– PC3-10600 ou DDR3-1333: funciona no máx. de 1333,3 MHz.
– PC3-12800 ou DDR3-1600: funciona no máx. de 1600 MHz.
– PC3-14900 ou DDR3-1866: funciona no máx. de 1866,6 MHz.
– PC3-17000 ou DDR3-2133: funciona no máx. de 2133,3 MHz.
– PC3-19200 ou DDR3-2400: funciona no máx. de 2400 MHz.
– PC3-21300 ou DDR3-2666: funciona no máx. de 2666,6 MHz.

11/23/2020 Parte 6.1. 25


DDR4 SDRAM

– Alguns tipos disponíveis são:


– PC4-1600 ou DDR4-1600: funciona no máx. de 1600 MHz.
– PC4-1866 ou DDR4-1866: funciona no máx. de 1866,6
MHz.
– PC4-17000 ou DDR4-2133: funciona no máx. de 2133,3
MHz.
– PC4-19200 ou DDR4-2400: funciona no máx. de 2400 MHz.
– PC4-25600 ou DDR4-2666: funciona no máx. de 2666,6
MHz.

11/23/2020 Parte 6.1. 26


DDR4 SDRAM

– DDR-4 ("Dual Data Rate 4") traduzido significa transmissão


dupla de dados. É uma memória quarta geração: se trata de
um padrão desenvolvido inicialmente por a firma Samsung®.
– Se baseia no uso de tecnologia tipo DRAM (RAM de células
construídas a base de capacitores), contam com 288
terminais.

Memoria RAM tipo DDR-4, marca Crucial®, modelo CT4K16G4RFD4213, capacidade 16 GB.

11/23/2020 Parte 6.1. 27


DDR4 SDRAM

– A célula de memória é carregada com uma corrente elétrica


alta quando o valor indicado é 1.
– A célula de memória é carregada com uma corrente elétrica
baixa quando o valor indicado é 0.
– Ao desligar o computador, as cargas desaparecem e todos os
dados são perdidos.

11/23/2020 Parte 6.1. 28


Sistema de Memória

 
Registrador de Seletor de
Dados (RDM) Memória

Dado 
Registrador de
Barramento de Dados Memória Central Endereços
(REM)

Sinais de  Endereço

Controle
Barramento de Endereços
Barramento de Controle

11/23/2020 Parte 6.1. 29


Sistema de Memória

1. Registrador de endereços: Contém o endereço da célula ou


posição de memória que vai ser acessada.
2. Registrador de Dados da Memória (RDM): Recebe os dados
nas operações de leitura e armazena os dados nas operações
de escrita.
3. Seletor de memoria: é a ativado a cada vez que seja
necessário ler ou escrever conectando a célula ou posição de
memória com o registrador de Dados da Memória (RDM).
4. Sinais de controle: Indicam se uma operação é de leitura ou de
escrita.

11/23/2020 Parte 6.1. 30


Exemplo de célula de memória

Demultiplexador
A0
A1

Endereçamento de Linha

A2 Endereçamento
A3 Multiplexador
de Coluna
Dado
11/23/2020 Parte 6.1. 31
DRAM e Ciclos de Refresh
– A perda de carga dos capacitores faz os dados serem apagados
numa fração de segundo.
– Assim as DRAMs são equipadas com um circuito especial que,
periodicamente, restaura os conteúdos das células de memória.
– A restauração ocorre para as linhas completas de memória,
através da leitura de cada linha e a sua subsequente escrita.

11/23/2020 Parte 6.1. 32


DRAM e Ciclos de Refresh
– Variações na tensão de um capacitor de célula DRAM depois de
escrever um “1” e subsequentes operações de Refresh.

Tensão “1” Escrito Restaurado Restaurado Restaurado


para “1”

Tensão
Limite
(Threshold)
Dezenas de
milissegundos
“0” antes de precisar
Armazenado de um ciclo de
Tensão restauração. Tempo
para “0”

11/23/2020 Parte 6.1. 33


DRAM Refresh
– Os capacitores da DRAM perdem carga ao longo do tempo.
– O controlador de memória precisa ler periodicamente cada linha
para restaurar a carga.
– Refresh = Ativação + Pré-carga de cada linha em N ms.
– Valor típico de N = 64 ms.
– Comando de Refresh: atualiza cada linha da DRAM
– Implicações sobre o desempenho?
– O banco de DRAM fica indisponível durante o comando de
refresh.

11/23/2020 Parte 6.1. 34


Usos das memórias caches

– Caches de dados: Guardam os últimos dados


referenciados.
– Caches de instruções: Guardam as últimas
instruções executadas.
– Trace cache: Guarda seqüências de instruções
para executar que não são necessariamente
adjacentes.
Fluxo do processo

CPU Cache L1 Cache L2 Cache L3

HDD DRAM

36
Fluxo do processo

CPU Cache L1 Cache L2 Cache L3

Clock: 1 ~ 4GHz

HDD DRAM

Taxa de Transferência:
80 ~ 150 MBPS

37
Fluxo do processo

SRAM SRAM SRAM

CPU Cache L1 Cache L2 Cache L3

Clock: 1 ~ 4GHz

DRAM

HDD DRAM

Taxa de Transferência: DDR3 – DDR4


80 ~ 150 MBPS 1600 ~ 2133 MHz

38
Fluxo do processo

+ou- ½ Clock L2 + DRAM

CPU Cache L1 Cache L2 Cache L3

+ou- Clock CPU +ou- ½ Clock 1 ~ 8MB


Clock: 1 ~ 4GHz 32 ~ 64KB CPU
256 ~ 512KB

HDD DRAM

Taxa de Transferência: DDR3 – DDR4


80 ~ 150 MBPS 1600 ~ 2133 MHz

39
Memória Cache
– Acesso por blocos.
– A memória principal é acessada por blocos.
– A memória cache é acessada por palavras.
– O processador solicita palavras à memória cache.
– A memória cache solicita bloco à memória principal.
Níveis de Cache

CPU → 1 ~ 2 ns

D I → L1 = f do μProcessador
→ 3 ~ 10 ns
L2 → +ou- 50% da f do μProcessador

L3 → +ou meio termo entre L2 e a MP

Memória Principal → 30 ~ 90 ns

→ CD-ROM: 120 a
Memória Secundária → 5 ~ 20 ms
300 ms
11/23/2020 Parte 6.1. 41
Ex.
– Um computador tem uma cache, uma memória principal e um
disco usado para memória virtual. Se uma palavra referenciada
estiver na cache, 20ns são necessários para acessá-la. Se
estiver na memória principal, mas não na cache, 60ns são
necessários para carregá-la para a cache, e depois a referencia
é iniciada novamente. Se a palavra não estiver na memória
principal, 12ms são necessários para buscar a palavra no disco,
seguidos de 60ns para copiá-la para a cache e depois a
referencia é iniciada novamente. A razão de acertos da cachê é
de 0,9 e a razão de acertos da memória principal é de 0,6. Qual
é o tempo médio em nanosegundos necessário para acessar
uma palavra referenciada no sistema?
Ex. : Resposta

– Assim, o tempo médio de acesso seria:


– TMÉDIO = (0,9)(20) + (0,06)(80) + (0,04)(12.000.080) =
480026 ns
Ex.
– Um computador conta com um processador
trabalhando a um clock de 4GHz e tem uma hierarquia
de memória assim definida: Cache L1, Cache L2, Cache
L3, Memória Principal e Memória Secundária. Pretende-
se saber qual é o tempo médio necessário para acessar
uma palavra referenciada pelo processador ao rodar um
processo genérico.
– Sabe-se que a latência da L1 = 4 ciclos de clock, L2 = 10
ciclos, L3 = 40 ciclos, MP = 60 ciclos e MS = 10000 ciclos.
As taxas de acerto (hit rate) das memórias são:
– L1 = 0,95; L2 = 0,90; L3 = 0,87 e MP = 0,85.
Ex. Resposta
– .
Estrutura do Cache

Memória Cache Memória Principal


Endereços
Bloco 0
Nº da
bel 1
Linha La 2 Bloco
3
0 K Palavras
1 K -1
2

C -1
Tamanho do Bloco Bloco
(K palavras)
2n - 1
Como buscar uma palavra na cache?

Palavra de 32 bits

Memória Cache

Processador

Memória Cache
Tamanho: 32 bytes

Com blocos de duas palavras


Memória Principal de 64
Quantas linhas tem a cache?
bytes = 16 palavras
Como buscar uma palavra na cache?

Palavra de 32 bits

Memória Cache

Processador

Memória Cache
Tamanho: 32 bytes
4 linhas
2 palavras por linha

Memória Principal de 64
bytes = 16 palavras
Número da Linha
Como buscar uma palavra na cache?

Palavra de 32 bits
Memória Cache

Palavra 1 Palavra 0

Processador

Endereço = 8

Memória Cache
Tamanho: 32 bytes
4 linhas
2 palavras por linha

Memória Principal de 64
bytes = 16 palavras
Como buscar uma palavra na cache?

Palavra de 32 bits
Memória Cache

Palavra 1 Palavra 0

Processador

Endereço = 8

Memória Cache
Tamanho: 32 bytes
4 linhas
2 palavras por linha
Falha
Memória Principal de 64
bytes = 16 palavras

50
Como buscar uma palavra na cache?

Palavra de 32 bits

Memória Cache

Palavra 1 Palavra 0

Processador

Endereço = 8

Memória Cache
Tamanho: 32 bytes
4 linhas
2 palavras por linha
Memória Principal de 64
bytes = 16 palavras

É escolhida uma linha na cache.


Como buscar uma palavra na cache?

Palavra de 32 bits

Memória Cache

Palavra 1 Palavra 0

Processador

Endereço = 8

Memória Cache
Tamanho: 32 bytes
4 linhas
2 palavras por linha

Memória Principal de 64
bytes = 16 palavras
Transfere o
Bloco
Como buscar uma palavra na cache?

Palavra de 32 bits
Memória Cache

Palavra 1 Palavra 0
Processador

0x0000100
Memória Cache
Tamanho: 32 bytes
4 linhas
2 palavras por linha

Memória Principal de 64
Transfere a bytes = 16 palavras
Palavra
Ex.
– Um computador dispõe do seguinte sistema hierárquico
de memória (ordenado dos níveis superiores aos
inferiores): registradores da CPU, cache primária, cache
secundaria, memória principal e discos magnéticos.
Indique se as seguintes afirmações são verdadeiras ou
falas e justifique:
1. O custo por palavra da cache primaria será menor
que o custo por palavra da cache secundaria.
2. A cache primaria será de menor tamanho que a
secundaria e conterá a cópia de alguns blocos desta.

54
Ex. - Dados
– Computador com um sistema hierárquico de
memória.
– A ordem dos níveis superiores para os inferiores é:
1. Registradores da CPU  Nível Superior
2. Cachê primaria
3. Cachê secundaria
4. Memória principal
5. Discos magnéticos  Nível Inferior
Ex. - Dados
– Quando se dispõe de um sistema hierárquico de
memória são cumpridos os seguintes princípios:
1. O custo por palavra é maior nos níveis
superiores que nos inferiores.
2. A capacidade de memória é menor nos níveis
superiores que nos inferiores.
3. A velocidade de transferência ou frequência de
acesso é maior nos níveis superiores que nos
inferiores.
Ex. - Resposta
– Considerando os três princípios citados
anteriormente, é possível verificar se as afirmações
são verdadeiras ou não.
– Afirmação 1 : É Falsa, visto que a cachê primaria
está em um nível superior à cachê secundaria, o
custo por palavra é maior na cachê primária que
na secundaria.
– Afirmação II: É Verdadeira, visto que a cachê
primaria está em um nível superior à cachê
secundaria, a capacidade é menor na cachê
primária que na secundaria.
Memória Cache
– Por que pode o desempenho pode melhorar com uma cache?
– Graças ao Princípio de Localidade:
– A faixa de endereços de memória a que acessa um
programa é relativamente pequena para períodos de
tempo curto.
– A informação dos endereços mais freqüentadas podem estar
em uma memória pequena e rápida (memória cache), e o
restante dos dados em uma grande e barata.
– O mais referenciado fica mais próximo da CPU.
– Na vida prática há muito exemplos de cache: residência
universitária, empresa de logística, etc.
Memória Cache
– Como é cumprido o princípio da localidade?
– Localidade temporal:
– Se um item é referenciado, ele tende a ser referenciado
novamente dentro de um espaço de tempo curto.
– Código: loops, recursividade, funções chamadas
freqüentemente.
– Dados: dados globais
– Localidade espacial:
– Se um item é referenciado, itens cujos endereços sejam
próximos dele tendem a ser logo referenciados.
– Código: código seqüencial.
– Dados: vetores, matrizes.
Princípio da Localidade

.
Localidade Temporal
i
for (i = 0; i < 1000; ++i)
.
{
v [0]
v[i] = 0;
} v [1]
.
Localidade Espacial
.
v [999]
Conexões da Memória Cache

Endereços

Buffer de

Barramento de Sistema
Endereços

Linhas de
Controle Linhas de Controle
Processador Cache

Buffer de
Dados

Dados
Localidade de Programa e Dados
– O Principio da Localidade é cumprido .
de duas formas na computação
moderna: Programa
– Localidade Geral: a memória de Aplicação
Dados 1
Dados e de Programa de uma
.
aplicação podem ser encontradas
Programa
relativamente próximas. Aplicação
– Localidade intrínseca dos Dados 2
acessos por tipo de memoria: .
1. Programa Programa
Aplicação
2. Dados. Dados 3
Localidade de Programa e Dados
– Estou leva a aproveitar ambos os tipos de localidade com uma
estrutura mais complexa, por níveis.

Cache de Programa Cache de Dados L1

Cache Compartilhada (Maior) L2


Ex.

– Um computador dispõe do seguinte sistema


hierárquico de memória (ordenado dos níveis
superiores aos inferiores): registradores da CPU, cachê
primária, cachê secundaria, memória principal e
discos magnéticos. Indique se as seguintes afirmações
são verdadeiras ou falas e justifique:
1. O custo por palavra da cachê primaria será menor
que o custo por palavra da cachê secundaria.
2. A cachê primaria será de menor tamanho que a
secundaria e conterá a cópia de alguns blocos
desta.
Ex.
– DADOS
– Computador com um sistema hierárquico de
memória.
– A ordem dos níveis superiores para os inferiores é:
– Registradores da CPU  Nível Superior
– Cachê primaria
– Cachê secundaria
– Memória principal
– Discos magnéticos  Nível Inferior
Ex.

– Quando se dispõe de um sistema hierárquico de


memória são cumpridos os seguintes princípios:
– O custo por palavra é maior nos níveis
superiores que nos inferiores.
– A capacidade de memória é menor nos níveis
superiores que nos inferiores.
– A velocidade de transferência ou freqüência de
acesso é maior nos níveis superiores que nos
inferiores.
Ex. - Resposta

– Considerando estes três princípios, é possível


verificar se as afirmações são verdadeiras ou não.
– Afirmação 1 : É Falsa, visto que a cachê primaria
está em um nível superior à cachê secundaria, o
custo por palavra é maior na cachê primária que
na secundaria.
– Afirmação II: É Verdadeira, visto que a cachê
primaria está em um nível superior à cachê
secundaria, a capacidade é menor na cachê
primária que na secundaria.
Memória Cache
– Se considerarmos um cache de nível único.
– Para acessar um palavra de dado, a cache é consultada em
primeiro lugar.
– Encontrar o dado requerido na cache é referenciado com
um acerto (hit) na cache;
– Não encontrar é uma falha (miss) de acesso (ou ausência
de dados) na cache.
– Um parâmetro importante na avaliação do funcionamento da
memória cache é a taxa de acerto definida como a fração
(%) dos acessos aos dados que podem ser satisfeitos a
partir da cache, em vez de utilizar a memória mais lenta que
fica após a cache.
Memória Cache
– O principal fator que influencia na melhora do desempenho com
o uso do cache é a chamada taxa de acerto (hit rate):

– O hit rate depende de vários fatores, mas principalmente da


localidade do código sendo executado:
– Programas com saltos condicionais muito frequentes não têm
boa localidade.
– Acesso frequente a dados muito espalhados na memória
também violam o princípio da localidade.
Memória Cache
– Suponha que, de cada 10 requisições de dados feitas pela
CPU, apenas 1 destas requer uma busca à memória principal.
Nas demais, os dados já se encontram no cache pois foram
obtidos em uma busca anterior.
– Acessos bem sucedidos ao cache: 10 – 1 = 9
– H = 9/10 = 0,9 = 90%
– Um parâmetro relacionado é a taxa de erro (miss rate), a
porção dos acessos a dados que incorrem em uma busca à
memória principal miss rate = 1 - H
Memória cache

– Tempo médio de acesso ao sistema de memória com uma memória cache.

– T = h · Tc + (1-h) · Tf

– Tc: tempo de acesso a cache.


– Tf: tempo para tratar a falha.
– Inclue o tempo para trazer o bloco para a cache.
– h: taxas de acertos
– Acertos: São produzidos h*100% das vezes.
– Somente necessários o tempo de acessar a cache.
– Falhas: São produzidos (1-h)*100% das vezes.
– São necessários o tempo de trazer o bloco para a cache.
Ex.

– Em uma memória cachê na qual são realizados 230


acessos com uma taxa de acertos de 75%, qual é o
número de falhas produzidas?
Ex.

–  DADOS:
– Número total de acessos NT =230
– Taxa de acertos h=75 %

– A definição de taxa de falhas (1- h) é:


Ex. : Resposta
–  Resolvendo o número total de Falhas:

– Substituindo os valores se obtém:


 

 
– Logo o número total de falhas é NF = 228 .
Ex.

– Em uma memória cachê na qual são realizados


220 acessos são produzidas 217 falhas. Qual é a
taxa de falhas correspondente?
Ex. : Dados
– DADOS:
– Número total de acessos NT =220
– Número de falhas NF =217
– Taxa de falhas?
Ex. : Resposta
–  A definição de taxa de falhas é:

 
– Logo a Taxa de falhas é 12,5 %
2 perguntas

1. Como se sabe se um dado está no cache?


2. Se está, como encontrá-lo?

– Estratégias:
a) Cache de mapeamento direto (direct mapped
cache).
b) Cache associativo total (fully associative cache).
c) Cache associativo por conjunto (n-way set
associative cache).
Função de correspondência

– Um projeto de memória cache necessita:


– De um algoritmo que diga em que lugares da memória
cache se pode armazenar um determinado bloco
determinado da memória principal.
– Um mecanismo que permita saber que bloco da
memória principal está em uma linha da memória cache.
– São associados labels as linhas.
Mapeamento de memórias cache
– A forma de fazer a correspondência entre o endereço da Memória
Principal (a que envia dados à CPU) e o lugar onde está armazenado o
dado requerido na cache define os diferentes tipos de cache:
– Associativa:
– O dado pode ocupar qualquer linha da memória.
– Utiliza memórias especiais tipo CAM (content addressable
memory).
– Mapeamento Direto:
– O dado somente pode ocupar uma determinada linha da cache.
– Utiliza memórias convencionais SRAM.
– Associativa por Grupos (ou conjuntos):
– O dado somente pode ser armazenado em umas poucas linhas da
cache.
Cache de mapeamento direto
– Forma mais simples de mapeamento.
– Posição na cache depende do endereço da palavra na
memória principal (MP).
– Cada palavra possui uma posição fixa.
– Grupo de palavras mapeado na mesma posição da cache.
– No cache com mapeamento direto, cada bloco é colocado
num “slot”, cujo nº pode corresponder, por exemplo, ao resto
da divisão do nº do bloco pelo nº de “slots”.
Cache de mapeamento direto
– Forma mais simples de mapeamento.

slot v tag valor endereços


0 1 0 137 0, 4096, 8192, 12288, ...
1 1 600 2131 4, 4100, 8196, 12292, ...
2 1 2 1410 8, 4104, 8200, 12296, ...
3 0

cache com
mapeamento direto

1023 0 4092, 8188, 12284, 16380, ...


Cache de mapeamento direto

– O endereço é dividido em três campos:


– Seleção de byte na linha.
– Seleção de linha.
– O endereço enviado pela CPU seleciona
diretamente a linha na cache
– Tag (Label).
– Identificar entre todos os endereços da Memória
Principal que são mapeados na mesma linha da
cache.
Cache de mapeamento direto
– Cada bloco da memória principal é mapeado a uma localização
fixa da cache.
– O endereço de uma palavra é dividido em três campos:
– Os w bits menos significativos identificam o dado dentro do
bloco.
– Os seguintes s bits identificam um número de linha dentro da
cache.
– E os t bits mais significativos formam o label do bloco.

Interpretação da Cache
Label Linha Dado
T bits S bits W bits
Cache de mapeamento direto
Palavra de 32 bits

Memória Cache
Tamanho: 32 bytes
4 linhas
2 palavras por linha

Memória Principal
Cache de mapeamento direto
Palavra de 32 bits

Bloco 0 – Linha 0

Memória Cache
Tamanho: 32 bytes
4 linhas
2 palavras por linha

Memória Principal
Cache de mapeamento direto
Palavra de 32 bits

Bloco 1 – Linha 1

Memória Cache
Tamanho: 32 bytes
4 linhas
2 palavras por linha

Memória Principal
Cache de mapeamento direto
Palavra de 32 bits

Bloco 2 – Linha 2

Memória Cache
Tamanho: 32 bytes
4 linhas
2 palavras por linha

Memória Principal
Cache de mapeamento direto
Palavra de 32 bits

Bloco 3 – Linha 3

Memória Cache
Tamanho: 32 bytes
4 linhas
2 palavras por linha

Memória Principal
Cache de mapeamento direto
Palavra de 32 bits

Bloco 4 – Linha 0

Memória Cache
Tamanho: 32 bytes
4 linhas
2 palavras por linha

Memória Principal
Cache de mapeamento direto
Palavra de 32 bits

Memória Cache
Tamanho: 32 bytes
4 linhas
2 palavras por linha

Vários blocos na mesma linha.


Memória Principal
Cache de mapeamento direto
Palavra de 32 bits

Memória Cache
Tamanho: 32 bytes
4 linhas
2 palavras por linha

Como é possível saber em qual bloco de memória se


encontra o endereço?
Exemplo: o endereço 0100100 Memória Principal
Cache de mapeamento direto

– Vantagens do mapeamento direto:


– Hardware barato.
– Procura simples (posição fixa).
– Simplicidade / Velocidade.
– Desvantagens do mapeamento direto:
– Pode ter mau aproveitamento das posições da
cache(dependendo dos endereços gerados).
– Usa parte da cache para controle.
Cache Associativa:

– Cada bloco de MP pode ser armazenado em qualquer linha da


cache.
Cache Associativa:

– Cada bloco de MP pode ser armazenado em qualquer linha da


cache.
– Cada bloco tem um endereço, que é um múltiplo de b, e o
tamanho do bloco é, normalmente, uma potência de 2.
– O cache associativo apresenta um nº de posições (“slots” ou
linhas), cada uma contendo um bloco e seu nº de bloco, junto
com um bit dizendo se aquela posição está em uso ou não.
– A ordem das entradas é aleatória.
Cache Associativa:

– Cada bloco de MP pode ser armazenado em qualquer linha da


cache.
endereço nº do bloco v nº do bloco valor
0 1 0 137
137 0
1 600 2131
4
1 2 1410
52 1
0
8 1k linhas
1 160248 290380
1410 2
12
635 3

~~ ~~ 1 22 bits 32 bits

(2**24) -1 cache associativo


Cache Associativa:
– Endereço da MP em qualquer posição da cache:
– Tag não fica mais na cache e sim em memória especial
(memória associativa).
– Pode ter bit de validade ou usar tag com valor inválido para
determinar se posição tem uma informação válida.
– Conseqüências:
– Necessita fazer procura de dado.
– Necessita política de substituição.
– Quando ocorre miss.
– Buscar no nível abaixo e, caso a cache esteja com todas
posições ocupadas, quem tirar para abrir lugar?
Cache Associativa:
– Solução para procurar:
– Procurar em paralelo.
– Usar memória associativa.
– Memória cara e de tamanho limitado.
Cache Associativa:

– A tag (etiqueta) de cada linha da cache armazena o


endereço do bloco na Memória Principal.
– São removidos os bits baixos (linha de 4 bytes: 2 bits).
– Forma de operar:
– A CPU lança o endereço.
– A parte alta do endereço é comparada simultaneamente
com todas as tags das linhas armazenadas na memória.
– Se houver acerto é selecionado o byte dentro da linha e
enviado para a CPU.
Cache Associativa:
– Um bloco da memória principal pode ser carregado em qualquer
linha da cache.
– O endereço é interpretado como dois campos, label (t bits) e
palavra (w bits).
– O label identifica univocamente um bloco de memória.
– São comparados os labels de todas as linhas para encontrar o
bloco buscado na cache.

Interpretação da Cache
Label Palavra
T bits W bits
Cache associativa
– Vantagens do mapeamento associativo:
– Melhor distribuição da informação na cache.
– Melhor aproveitamento da cache  Praticamente 100% de
aproveitamento.
– Tags não ocupam espaço da cache (estão na memória
associativa).
– Desvantagens:
– Memória associativa tem alto custo e tamanho limitado.
– Limita número de linhas da cache.
– Necessita política de substituição.
– Pode ocorrer escolhas inadequadas.
– Gasta tempo.
Cache associativa por conjuntos

– Varias caches de mapeamento direto em


paralelo.
– A linha é endereçada como mapeamento
direto.
– Cada linha pode armazenar vários blocos.
– Os blocos são diferenciados através das
tags.
– Comportamento intermediário entre
associativa e mapeamento direto.
Cache associativa por conjuntos
– No cache associativo por conjunto utiliza-se um cache de
mapeamento direto com múltiplas entradas por “slot”.
slot v tag valor v tag valor v tag valor
0
1
2
3
...

entrada 0 entrada 1 entrada n-1


Cache associativa por conjuntos
Palavra de 32 bits

Número do Conjunto
Número da Linha

Conjunto 0
Conjunto 1

Memória Cache
Tamanho: 32 bytes
Associativa por conjunto de 2 vias
2 linhas por conjunto
2 palavras por linha

Memória Principal
Cache associativa por conjuntos
Palavra de 32 bits

Bloco 0 – Conjunto 0

Conjunto 0
Conjunto 1

Memória Cache
Tamanho: 32 bytes
Associativa por conjunto de 2 vias
2 linhas por conjunto
2 palavras por linha

Memória Principal
Cache associativa por conjuntos
Palavra de 32 bits

Bloco 1 – Conjunto 1

Conjunto 0
Conjunto 1

Memória Cache
Tamanho: 32 bytes
4 linhas
2 palavras por linha

Memória Principal
Cache associativa por conjuntos
Palavra de 32 bits

Bloco 2 – Conjunto 0

Conjunto 0
Conjunto 1

Memória Cache
Tamanho: 32 bytes
4 linhas
2 palavras por linha

Memória Principal
Cache associativa por conjuntos
Palavra de 32 bits

Bloco 3 – Conjunto 1

Conjunto 0
Conjunto 1

Memória Cache
Tamanho: 32 bytes
4 linhas
2 palavras por linha

Memória Principal
Cache associativa por conjuntos
Palavra de 32 bits

Bloco 4 – Linha 0

Conjunto 0
Conjunto 1

Memória Cache
Tamanho: 32 bytes
4 linhas
2 palavras por linha

Deve-se eliminar a linha que estava ocupando antes.

Memória Principal
Cache associativa por conjuntos

– Vantagens:
– Aumenta tamanho da cache mantendo tamanho da memória
associativa (limitação tecnológica ou custo).
– Pode usar a totalidade da cachepara dados.
– Tag sestão nas memórias associativas.
– Bit de validade pode ser substituído por endereço inválido.
– Desvantagens:
– Memória associativa tem alto custo e tamanho limitado.
– Necessita política de substituição.
– Gasta tempo.
– Pode escolher mal.
Comparação entre associativa e
mapeamento direto.

Associativa Mapeamento Direto


Pior: Pouco flexível. Programa
Melhor: Qualquer endereço em é que gera endereços que
Taxas de falhas
qualquer linha. utilizam a mesma linha da
cache.
Pior: Integrar um comparador por Melhor: somente um
Tamanho
Linha. comparador.
Melhor: memória SRAM: 6
Pior: necessita um comparador por transistores/bit. Permite utilizar
Preço
linha. CAM: 9 ou 10 transistores/bit. uma memoria mais lenta para
os datos.
Melhor: simplicidade,
Velocidade
comparador menor.
Ex. 12

Indicar se as seguintes afirmações são verdadeiras


ou falsas e justificar a resposta. Em um sistema de
memória cache com correspondência totalmente
associativa:
1. Não é necessário definir uma política de
substituição.
2. Um possível algoritmo de substituição consiste
em substituir partições escolhidas de forma
aleatória.
Ex. 12 - Resposta
– Afirmação 1: Esta afirmação é Falsa, pelo próprio
funcionamento deste tipo de função de
correspondência, quando a memória cache está
cheia deve-se definir uma política de substituição
de blocos.
– Afirmação 2: Esta afirmação é Verdadeira.
Substituição de blocos

– Quando todas as entradas da cache contém blocos


da memória principal:
– É necessário selecionar uma linha que deverá ser
deixada livre para trazer um bloco da MP.
– Associativa: Selecionar uma linha da cache.
– Associativa por conjuntos: Selecionar uma linha
do conjunto selecionado.
– Existem diversos algoritmos para selecionar a
linha da cache que dever ser liberada.
Algoritmos de substituição

– FIFO (First-in-first-out):
– Substitui a linha que fica mais tempo na cache.
– LRU (Least Recently Used):
– Substitui a linha que fica mais tempo sem ser usada.
– Escolha precisa variável de tempo a cada acesso e
comparação.
– LFU (Least Frequently Used):
– Substitui a linha que foi usada menos vezes.
– Escolha precisa mecanismo de contagem para cada
acesso
Algoritmos de substituição

– Randômica:
– Escolhe aleatoriamente posição a ser substituída.
– Simples, mas sujeito a aumentar número de caches
miss.
– Contador:
– Um contador baseado em algum relógio aponta para a
próxima posição a ser substituída.
– Simples, mas igualmente à política randômica, está
sujeita a aumentar o número de misses.
Políticas de escrita

– Quando se modifica um dado na memória cache há


necessidade de que se atualize em algum momento a
memória principal.
– Alternativas:
– Escrita imediata.
– Pós-escrita.
Políticas de escrita.
– Quando o dado é atualizado na cache é também atualizado na
Memória Principal?
– Estratégia Write-Through:
– Sempre é atualizada a Memória Principal.
– A cache melhora o rendimento unicamente na leitura.
– Estratégia Write-Back:
– Somente é atualizada a Memória Principal quando o dado
vai ser eliminado da cache para abrigar outro dado.
– A fase de escrita pode ser melhorada mediante o uso de um
buffer de escrita.
Políticas de escrita.

– Uma escrita (write) é o resultado de um store.


– O store deve escrever no cache e na memória.
– De outro modo o cache e a memória seriam inconsistentes.
Políticas de escrita.

– Duas estratégias para o manejo das escritas:


– Write-through: Escrever cada vez no cache e na
memória.
– Write-back: Escrever somente no cache e copiar o
dado na memória quando a entrada no cache vai ser
substituída.
Políticas de escrita.
– Problema da saturação do buffer de escrita.
– Um buffer de escrita é uma fifo de poucos bloco.
– Problema: Saturação.
– Velocidade de retirada de dados para a Memória
Principal menor que velocidade de entrada de novos
dados.
– O número de operações de escrita muitas vezes é
bastante inferior ao número de operações de leitura.
Políticas de escrita.
– Problema da saturação do buffer de escrita.
– Um buffer de escrita é uma fifo de poucos bloco.
– Problema: Saturação.
– Para solucionar: segunda cache (L2).
Write-through

– O buffer de escrita é uma fila que guarda dados que estão


esperando para ser escritos na memória principal.
– O programa escreve no cache e no buffer e continua
executando instruções.
– Se o buffer está cheio, o store seguinte store é parado.
– Um processador superescalar pode continuar executando
alguma outra instrução.
– Nenhum buffer é suficiente se o processador produz
escritas mais rápido do que a memória pode aceitá-las.
Write-back

– O bloco de cache é escrito na memória somente se for


necessário.
– O bloco tem um bit chamado bit sujo.
– Se o bit sujo está apagado, o bloco não foi modificado e
pode ser substituído sem perigo.
– Se o bit sujo está preso, há uma inconsistência entre o
cache e a memória. Antes de ser substituído, o bloco
deve ser escrito na memória.
Comparação
– Write-through necessita um ciclo de clock para escrever
porque o dado simplesmente é sobrescrito.
– Write-back necessita dois ciclos de clock para escrever:
– Um ciclo para ver se o dado está no cache.
– Outro ciclo para escrever o dado.
– Uma solução é usar um buffer de store.
– O processador busca no cache e coloca o dado no buffer
durante o ciclo normal de acesso ao cache.
– Supondo acerto, o dato é escrito no cache durante o ciclo
seguinte sem usar.
Falha do cache

– Cache miss.
– Uma requisição por dados (ou instruções) que não for
cumprida porque o dado não está no cache.
– Se o cache reporta êxito, o computador usa o dado ou
instrução e continua como se nada tivesse ocorrido.
– Se o cache reporta falha, o controle deve obter o dado do
nível seguinte da hierarquia e possivelmente parar (stall) o
pipeline.
– Os superescalares, com execução fora de ordem, podem
executar outras instruções e ocultar a falha.
Falha de cache

– Em um cache de instruções:
1. Se envia o valor original do PC (PC atual – 4) para
a memória.
2. Ordenar uma leitura na memória e esperar para
que seja completada.
3. Guardar a instrução no cache, escrevendo os bits
altos do endereço no label e retendo o bit válido.
4. Recomeçar a execução da instrução desde o
primeiro passo.

127
Organização da memória
Resumo

– Cache de mapeamento direto.


– Uma palavra pode ir em um só bloco e há um label para
cada bloco.
– Estratégias para manter o cache e a memória
consistentes: write-through e write-back.
– Para tomar vantagem da locality espacial o bloco do
cache deve ser maior que uma palavra.
– Blocos grandes reduzem a taxa de falhas e melhoram a
eficiência ao requerer menos espaço para os labels.
Resumo

– Bloco grandes incrementam o castigo por falha.


– Para evitar o incremento se aumenta a largura de
banda da memória para transferir blocos mais
eficientemente.
– O dois métodos mais comuns para obter o incremento
são fazer a memória mas ampla e interleaving.
– Interleaving tem vantagens adicionais.
Final do Tópico 4.3 da
Unidade 4.0.