Organização de Computadores
Aula 20
Memória Principal
Rodrigo Hausen
20 de outubro de 2011
http://cuco.pro.br/ach2034
Apresentação
● 1. Bases Teóricas ● 2. Organização de computadores – ... – 2.2. Execução de instruções – 2.3. Estruturas de Interconexão– 2.4. Visão Geral do Sistema de Memórias
● Aula de hoje: Stallings (5a. Edição), “4.1. Visão geral do
sistema de memória” e “4.2. Memória principal de semicondutor”
Foco de Hoje: Memória(s)
● Diferentes tipos de memória para diferentes usos
– Buscamos a melhor razão custo/benefício para cada
aplicação
● Características de tipos diferentes de memória
– Tecnologia – Capacidade – Localização – Unidade de transferência – Método de acesso – Desempenho – Características físicas
Arquitetura Exemplo
Memória Principal Módulo de E/S ULA Barramento do Sistema R1 ... RnTecnologias de memória
● Desde o advento da computação digital, praticamente
qualquer coisa que poderia ser usada para armazenar informação já foi utilizada:
– cartões e fitas de papel perfurados
– sinais magnéticos em fitas ou superfícies metalizadas – ondas mecânicas propagando-se em um meio físico – alterações de propriedades óticas de um meio físico
– sinais elétricos em relés/capacitores/válvulas/transistores – etc.
Tecnologias Atuais
● Por razões de praticidade, desempenho e custo de
produção, hoje em dia é comum o uso das seguintes tecnologias:
– Semicondutor: RAM estática, RAM dinâmica, memória Flash (cartões de memória e pendrives).
– Magnética: disco rígido (HD), fita magnética. – Ótica: CD-ROM, DVD, Blu-Ray
Latch D: uma memória para 1 bit
● Vimos que um latch D é uma célula de memória de 1 bit
● Relembrando: toda porta lógica é feita com
“interrruptores” controlados por sinais elétricos.
● Hoje em dia, os “interruptores” das portas lógicas são
feitos com transistores.
Latch D D EN Q
=
D EN Q Din Dout WRLatch D: Uma implementação
● Curiosidade: um circuito equivalente a um latch do tipo
D requer, no mínimo, 6 transistores.
Dout WR
Din +Vcc
Memória de 1 bit mais simples
● É possível criar um circuito mais simples para memória,
usando apenas 1 transistor e 1 capacitor.
● O dado é armazenado como carga no capacitor: capacitor
carregado = 1, capacitor descarregado = 0
● Desvantagem: o capacitor perde a carga com o tempo,
ou seja, o dado é perdido se o capacitor não for recarregado periodicamente (refresh).
Dout WR
Memória Estática x Dinâmica
Memória Estática Memória Dinâmica
Implementa-ção de 1 bit
Latch D (6 transistores) 1 transistor e 1 capacitor Custo Maior (aprox. 6 x custo
memória dinâmica)
Menor Velocidade Aprox. “6 x mais rápida”
que a memória dinâmica.
Menos “rápida”
● As memórias feitas com transistores são chamadas semicondutoras.
Localização
● À exceção dos barramentos, dados são armazenados em
todas as partes de um sistema computacional:
– Registradores na CPU
– Memória principal: também chamada memória RAM
(Random Access Memory)
Capacidade
● A memória interna é organizada em palavras. ● Tamanhos de palavra comuns:
Capacidade
● A memória interna é organizada em palavras. ● Tamanhos de palavra comuns:
– 8 bits (byte), 16 bits, 32 bits, 64 bits.
● Número de posições: “tamanho” da memória
– geralmente é expresso em bytes, mesmo que a organização
Capacidade
● A memória interna é organizada em palavras. ● Tamanhos de palavra comuns:
– 8 bits (byte), 16 bits, 32 bits, 64 bits.
● Número de posições: “tamanho” da memória
– geralmente é expresso em bytes, mesmo que a organização
seja em palavras de tamanho diferente.
● Ex.: a memória interna de um computador está
organizada em palavras de 32 bits, e o endereço de cada posição é dado por um número de 24 bits. Qual é a
Capacidade
● A memória interna é organizada em palavras. ● Tamanhos de palavra comuns:
– 8 bits (byte), 16 bits, 32 bits, 64 bits.
● Número de posições: “tamanho” da memória
– geralmente é expresso em bytes, mesmo que a organização
seja em palavras de tamanho diferente.
● Ex.: a memória interna de um computador está
organizada em palavras de 32 bits, e o endereço de cada posição é dado por um número de 24 bits. Qual é a
capacidade da memória?
Capacidade
● A memória interna é organizada em palavras. ● Tamanhos de palavra comuns:
– 8 bits (byte), 16 bits, 32 bits, 64 bits.
● Número de posições: “tamanho” da memória
– geralmente é expresso em bytes, mesmo que a organização
seja em palavras de tamanho diferente.
● Ex.: a memória interna de um computador está
organizada em palavras de 32 bits, e o endereço de cada posição é dado por um número de 24 bits. Qual é a
capacidade da memória?
– 24 bits para endereço = 224 posições = 16777216 palavras – 16777216 x 32 bits = 16777216 x 4 bytes
Multiplicadores do SI
● Multiplicadores (prefixos) do Sistema Internacional de
Unidades
E
exa
10
18um quintilhão
P
peta
10
15um quatrilhão
T
tera
10
12um trilhão
G
giga
10
9um bilhão
M
mega
10
6= 1000000
um milhão
k
kilo
10
3= 1000
um mil
Multiplicadores Binários
● Para medir capacidade de memória principal, usam-se os
seguintes prefixos:
E
exa
2
60P
peta
2
50T
tera
2
40G
giga
2
30M
mega
2
20= 1024 x 1024 = 1048576
k
kilo
2
10= 1024
Capacidade: Exemplo
● Uma memória de 536870912 bytes possui:
(53870912 / 1024) kbytes = 524288 kbytes = (524288 / 1024) Mbytes = 512 Mbytes = (512 / 1024) Gbytes = 0,5 Gbyte
● Costuma-se usar B com significado de “byte”: – kB = kilobyte (o certo é usar k minúsculo) – MB = megabyte
– GB = gigabyte – etc.
Prefixos SI ou Prefixos Binários?
● Note que pode haver confusão no uso dos mesmos
símbolos para prefixos do SI (potências de 10) e prefixos de capacidade de memória (potências de 2).
● Hoje em dia está começando a ficar comum a
diferenciação entre os símbolos, adicionando-se a letra i entre o prefixo binário e o símbolo B (para byte):
– kiB = kilobibyte = 1024 bytes
– MiB = megabibyte = 1048576 bytes – GiB = gigabibyte = 1073741824 bytes – etc.
● Hoje em dia, fabricantes de discos rígidos (muito
Localização
● À exceção dos barramentos, dados são armazenados em
todas as partes de um sistema computacional:
– Registradores na CPU
– Memória principal: também chamada memória RAM
(Random Access Memory)
Unidade de Transferência
● Núm. de bits que podem ser lidos/escritos de uma só vez ● Memória interna:
– Geralmente é governado pela largura do barramento de
dados; costuma ser igual a uma palavra de memória
● Memória externa:
– Geralmente a leitura/escrita ocorre por bloco, que é muito
maior do que uma palavra de memória
● Unidade endereçável:
– Menor posição que pode ser acessada separadamente. – Master System (Z-80): palavra de memória = 8 bits,
unidade endereçável = 8 bits
– PCs com processador 386 até Pentium III: palavra de
Método de Acesso (1)
● Sequencial:
– Comece pelo início e leia sequencialmente, em ordem – Tempo necessário para acessar um dado depende da
posição desse dado relativamente ao início da memória
– Exemplo: fita
● Direto:
– Acesso direto a um a vizinhança (bloco), depois busca
sequencial dentro do bloco para encontrar um dado
– Tempo necessário para acessar um dado depende
principalmente do último bloco acessado (tempo de busca no bloco é comparativamente pequeno)
Método de Acesso (2)
● Aleatório:
– Acesso imediato a qualquer posição por seu endereço
– Tempo necessário para acessar um dado independe da
posição desse dado da memória ou do acesso anterior
– Exemplo: memória RAM
● Associativo:
– Dado é localizado por comparação com parte do que está
armazenado na memória
– Tempo necessário para acessar um dado independe da
posição desse dado da memória ou do acesso anterior
Desempenho
Medido por..
● … tempo de acesso: Ta
– Tempo decorrido entre a apresentação de um endereço à
memória e a obtenção/armazenamento desse dado
● … tempo de ciclo de memória: Tc
– Pode ser que a memória precise de um tempo para se
“recuperar” de um acesso anterior (Tr)
– Tc = Ta + Tr
● … taxa de transferência: R
– Relação entre a quantidade de dados que podem ser
Desempenho: Taxa de Transferência
● Em memória de acesso aleatório: R = 1/Tc
● Em memórias com outros métodos de acesso, vale:
Tn = Ta + N / R
onde
● R = taxa de transferência
● N = número de bits a ser acessados ● Ta = tempo médio de acesso
Desempenho: Tempo de Acesso
● Geralmente expresso em frações de segundo ● Prefixos do SI para números pequenos:
● Memória RAM estática: 9ns (nanossegundos) a 15ns ● Memória RAM dinâmica: 50ns a 250ns
m mili 10-3 0,001
μ micro 10-6 0,000001
n nano 10-9 0,000000001
Características Físicas
● Volatilidade: os dados são perdidos se o fornecimento de
energia é interrompido?
– Voláteis: memória de semicondutor estática, memória de
semicondutor dinâmica
– Não voláteis: disco/fita magnéticos, CD-ROM, memória
Flash
● Possiblilidade de reescrita/apagamento: é possível
reescrever/apagar os dados gravados?
– Leitura/escrita: memória estática, memória dinâmica,
disco/fita magnéticos
– Somente leitura: (na verdade, permite apenas 1 escrita)
CD-ROM, CD-R, memória ROM
Organização
● Arranjo físico dos bits para formar unidades de
endereçamento e palavras.
● Nem sempre óbvio (geralmente, procura-se um arranjo
que otimiza o desempenho, mantendo a complexidade de construção da memória razoável)
Relação entre Características
● A tecnologia e organização de uma memória influenciam
a sua capacidade, desempenho e custo por bit.
● Atualmente, não é possível equilibrar os três fatores
usando um só tipo de memória:
– Desempenho melhor, custo por bit maior – Capacidade maior, custo por bit menor – Capacidade maior, desempenho pior
● Solução: usar uma mistura de tipos de memória,
escolhendo as mais adequadas a cada parte do computador.
Hierarquia de Memória
Regis-tradores
Cache
Memória Principal Disco Flash (pendrive)
Disco rígido (HD) CD-ROM/DVD/Blu-Ray memória interna memória externa armazenamento de backup mais próximo à CPU mais
Hierarquia de Memória
custo por b it maior menor capaci dade menor maior tempo de acesso menor maior frequ ência de ace sso maior menorLista da Hierarquia
● Registradores: memória RAM estática (latches D) ● Memória cache: memória RAM estática (latches D) ● Memória principal: memória RAM dinâmica
● Cache de disco: memória RAM dinâmica
● Disco: memória magnética (hoje em dia começa-se a
substitui-la por memória flash)
● Memória de backup: memória magnética (fita) ou óptica
● Pequena quantidade de memória rápida entre a CPU
comum e a memória principal.
– Tempo de acesso típico: 10ns = 10−9 s = 0.000000001s
– Capacidade típica: de centenas de kB a poucos MBs
(compare com a memória principal: Ta aprox. 60ns, capacidade típica de alguns GBs)
● Pode ser localizada no mesmo circuito integrado que
contém a CPU, em um módulo de memória cache na placa-mãe, ou até mesmo em um circuito de cache integrado à memória principal.
Por que funciona?
● Imagine o problema de se alimentar em casa:
– Você vai ao supermercado para comprar alimento antes de
toda refeição?
– Ou compra alimento para alguns dias e coloca na
despensa?
● Por que é mais eficiente guardar alimento na despensa?
– Porque o tempo de acesso à despensa é menor, e a
probabilidade de precisar de um item que não esteja na despensa é pequena.
– Em inglês: despensa = cache
Localidade de Referência
● Se você precisar ir ao supermercado comprar farinha,
provavelmente valerá a pena comprar também fermento, açúcar, leite e ovos (muitas receitas usam esses
ingredientes) e colocar tudo na despensa.
● No computador a ideia é similar: se eu precisar acessar o
conteúdo de uma posição de memória e trazê-lo para o cache, muito provavelmente eu precisarei acessar um
bloco de posições próximas a essa em um futuro próximo
– instruções são executadas, quase sempre, sequencialmente – elementos de um vetor estão em posições próximas na
Operação do “Cache” de Mercado
● Durante a preparação de uma receita, você precisa de um
ingrediente
● Verifique se ingrediente está na despensa ● Se está, obter da despensa (rápido)
● Se não está presente, ir ao supermercado, comprar o
ingrediente e ingredientes relacionados, e colocar na despensa.
● Tire o ingrediente da despensa e continue a preparar a
Operação da Memória Cache
● CPU requisita conteúdo de posição de memória
● Verificar o cache se conteúdo relativo à posição está lá ● Se presente, obter do cache (rápido)
● Caso contrário, ler bloco de dados da memória para o
cache (bloco = conjunto de endereços)
● Então, transferir o dado do cache para a CPU
– O cache deve incluir rótulos que permitam identificar a
qual bloco e endereço da memória corresponde cada dado contido no cache.
Estrutura do Cache
tamanho Bloco Bloco (K palavras) 2n − 1 3 2 1 0..
.
..
.
endereço de memória número da linha bloco rótulo C−1 2 1 0 tamanho do bloco (K palavras) K−1 Cache . . . . . . . . . . . .Influência no Desempenho
● O principal fator que influencia na melhora do
desempe-nho 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
H =acessos bem sucedidos ao cache acessos totais a dados
Hit Rate: Exemplo
● 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.
Hit Rate: Exemplo
● 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.
Hit Rate: Exemplo
● 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%
Hit Rate: Exemplo
● 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
Tempo de Acesso Efetivo
● Suponha, no exemplo anterior (9 de 10 acessos ao cache
são bem sucedidos), que os tempos de acesso são: ao cache: Tcache à memória: Tmem
Tempo de Acesso Efetivo
● Suponha, no exemplo anterior (9 de 10 acessos ao cache
são bem sucedidos), que os tempos de acesso são: ao cache: Tcache à memória: Tmem
● Qual é o tempo de acesso total para os 10 acessos?
1 miss: Tmem (aproximadamente)
9 hits: Tcache
Tempo de Acesso Efetivo
● Suponha, no exemplo anterior (9 de 10 acessos ao cache
são bem sucedidos), que os tempos de acesso são: ao cache: Tcache à memória: Tmem
● Qual é o tempo de acesso total para os 10 acessos?
1 miss: Tmem (aproximadamente)
9 hits: Tcache
Ttotal = 1 x Tmem + 9 x Tcache = 9Tcache+1Tmem
● Qual é a média dos tempos de acesso?
Tempo de Acesso Efetivo
● Suponha, no exemplo anterior (9 de 10 acessos ao cache
são bem sucedidos), que os tempos de acesso são: ao cache: Tcache à memória: Tmem
● Qual é o tempo de acesso total para os 10 acessos?
1 miss: Tmem (aproximadamente)
9 hits: Tcache
Ttotal = 1 x Tmem + 9 x Tcache = 9Tcache+1Tmem
● Qual é a média dos tempos de acesso?
Ttotal / Núm. de acessos = 9/10 Tcache + 1/10 Tmem = = H Tcache + (1 - H) Tmem
Tempo de Acesso Efetivo
● Tempo médio de acesso ao subsistema constituído pela
memória principal/cache
● Uma boa aproximação é dada pela fórmula:
TAE = H Tcache + (1 – H) Tmem
● onde T
cache é o tempo de acesso ao cache
Tmem é o tempo de acesso à memória H é o hit rate
● Note que estamos desprezando o tempo de atualização
das estruturas do cache quando trazemos um bloco da memória principal para o cache.
● O TAE exato é muito difícil de calcular (e pode variar, já
Hit Rate e o Desempenho
● Suponha que T
cache = 10ns, Tmem = 60ns:
– H = 90%, TAE = 0,9 x 10ns + 0,1 x 60ns = 17ns
(tempo de acesso diminui 75%)
– H = 75%, TAE = 0,75 x 10ns + 0,25 x 60ns = 22,5ns
(tempo de acesso diminui 62,5%)
– H = 60%, TAE = 0,6 x 10ns + 0,4 x 60ns = 30ns
(tempo de acesso diminui 50%)
– H = 45%, TAE = 0,45 x 10ns + 0,55 x 60ns = 37,5ns
(tempo de acesso diminui 37,5%)
– H = 30%, TAE = 0,3 x 10ns + 0,7 x 60ns = 52,5ns
Hit Rate e o Desempenho
● TAE x hit rate
TAE
Hit rate
Tmem
Tcache
Por que não Hit Rate = 100%?
● Pelo gráfico, o menor tempo de acesso ao subsistema de
memória é obtido quando H = 100%
● Ou seja, quando todo e qualquer acesso de dado é
satisfeito pelo cache.
● Isto implicaria que todo e qualquer dado na memória
deveria estar também no cache.
● Por que não é viável hit rate de 100%?
● Na prática, é possível fazer cache com hit rate de
aproximadamente 90% (para boa localidade de memória) usando-se apenas 1MB de cache, com memória principal
Cache Multinível
● Em vez de apenas uma memória mais rápida entre a
CPU e a memória principal, coloca-se uma hierarquia de memórias entre esses componentes:
– Cache L1 (mais próximo da CPU): mais rápido, menor
capacidade
– Cache L2 (imediatamente após L1): um pouco menos
rápido, capacidade um pouco maior
– …
– Cache Ln (último nível antes da memória): cache menos
TAE com Cache Multinível
● Para entender o TAE de todo o sistema com cache
multinível, basta observar o sistema como sendo:
CPU – Cache L1 – Memória efetiva (composta pelo subsistema memória principal e demais níveis de cache)
● Sejam T
i o tempo de acesso e Hi o hit rate do cache Li.
TAE
● Para um sistema que tenha apenas dois níveis de cache,
L1 e L2, teremos:
TAE com Cache Multinível
● Para um sistema que tenha apenas dois níveis de cache,
L1 e L2, teremos:
TAE com Cache Multinível
TAE sistema = H1T 1+(1−H1)TAE mem.efetiva
● Para um sistema que tenha apenas dois níveis de cache,
L1 e L2, teremos:
TAE com Cache Multinível
TAE sistema = H1T 1+(1−H1)(H 2T 2+(1−H2)T mem)
TAE sistema = H1T 1+(1−H1)TAE mem.efetiva
● Para um sistema que tenha apenas dois níveis de cache,
L1 e L2, teremos:
TAE com Cache Multinível
TAE sistema = H1T 1+(1−H1)(H 2T 2+(1−H2)T mem)
TAE sistema = H1T 1+(1−H1)TAE mem.efetiva
TAE mem.efetiva = H2T 2+(1−H2)T mem
Para Casa
● Deduzir uma expressão para o tempo de acesso efetivo
para um sistema com 3 níveis de cache, L1, L2, L3, entre a memória e a CPU
● Ler seções (5a ed.) 4.1, 4.2 (com atenção, leia da
introdução da seção até “organização em módulos”), 4.3 e apêndice do capítulo 4