Arquitetura de Computadores
Arquitetura de Computadores
- Sistemas de Memória Interna
por
Organização da Memória
Registradores Memória Cache Memória Principal Disco Magnético CD-R CD-RWcusto por bit capacidade tempo de acesso freq. de acesso pelo processador CD-RW DVD-R DVD-RW Fita Magnética
Características fundamentais
Localização − Processador Unidade de Transferência − Processador − Interna (principal) − Externa (secundária) Capacidade − Tamanho da palavra Transferência − Palavra − Bloco Método de Acesso − Sequencial − Tamanho da palavra− Número de palavras − Direto
− Aleatório
Método de Acesso Sequencial
Os dados são organizados em registros
sequenciais sequenciais
Exemplo: fitas magnéticas
Trilha 01 Trilha 02 Trilha 03 Trilha 04 Trilha 05 Trilha 06 Trilha 07 Registro físico Trilha 07 Trilha 08 Trilha 09
Espaço entre registros
O tempo de acesso é variável
Método de Acesso Direto
Cada bloco de dados possui um endereço
único, baseado na localização física único, baseado na localização física
O acesso é feito através do acesso direto a
uma vizinhança genérica do registro, e em seguida por uma busca seqüencial
O tempo de acesso é variável
Exemplo: HD Exemplo: HD Dado buscado (trilha 02, setor 25) Movimento do braço Movimento do disco
Método de Acesso Aleatório
Cada posição de memória possui um endereço
único único
O tempo de acesso a uma posição é constante,
sendo independente dos acessos anteriores
Exemplos: Memória principal e alguns sistemas
de memória cache P1 P2 P3 P4 ... P8 000 001 010 011 111 ... endereços acesso 6
Método de Acesso Associativo
Tipo de acesso aleatório que compara
simultaneamente certo número de bits de uma simultaneamente certo número de bits de uma palavra com todas as palavras da memória, determinando quais delas contêm o mesmo padrão de bits
Uma palavra é buscada com base em parte de
seu conteúdo, e não de acordo com o seu endereço
seu conteúdo, e não de acordo com o seu endereço
Características fundamentais
Desempenho − Tempo de Acesso Características físicas − Volátil/não-volátil − Tempo de Acesso − Tempo de ciclo − Taxa de transferência Tecnologia − Semicondutores − Volátil/não-volátil − Apagável/não-apagável Organização − Arranjo físico de células − Semicondutores − Magnética − Óptica células − Formas de Encapsulamento − Detecção e correção de errosTempo de Acesso (T
A)
Em memórias de acesso aleatório:
− Tempo decorrido desde o instante em que um
− Tempo decorrido desde o instante em que um
endereço é apresentado à memória até o momento em que os dados são armazenados ou se tornam disponíveis para utilização
Em memórias de acesso não-aleatório:
− Tempo gasto para posicionar o mecanismo de
− Tempo gasto para posicionar o mecanismo de
Tempo de Ciclo (T
C)
Aplicável principalmente às memórias de
acesso aleatório acesso aleatório
Compreende o tempo de acesso e o tempo
adicional requerido antes que um segundo acesso possa ser iniciado
O tempo adicional é necessário para o
desaparecimento de transientes nas linhas de desaparecimento de transientes nas linhas de sinal
Taxa de Transferência (R)
Taxa na qual os dados podem ser transferidos
de ou para a unidade de memória de ou para a unidade de memória
− Para memórias de acesso aleatório:
R = 1/TC
− Para memórias de acesso não-aleatório:
R = N/(T
N – TA), em que:
− TN é o tempo médio para ler ou escrever N bits
− TN é o tempo médio para ler ou escrever N bits
Tecnologia de Semicondutores
Tipo de memória Memória de acesso aleatório (RAM) Categoria Memória de leitura e de Mecanismo de apagamento Eletricamente, em Mecanismo de escrita Eletricamente Volatilidade Volátil aleatório (RAM) Memória apenas de leitura (ROM) ROM Programável (PROM) PROM Apagável (EPROM) leitura e de escrita Memória apenas de leitura em nível de Byte Não é possívelLuz UV, em nível de pastilha Eletricamente Máscaras Volátil Não-volátil PROM Eletricamente Apagável (EEPROM)
Memória Flash principalmenteMemória de leitura Eletricamente, em nível de blocos Eletricamente, em nível de Bytes Eletricamente
Memórias RAM
RAM dinâmica (DRAM)
− Células armazenam dados com a carga de
− Células armazenam dados com a carga de
capacitores
− É necessário um circuito de regeneração (refresh)
RAM estática (SRAM)
− Valores são armazenados usando configurações
de flip-flops com portas lógicas de flip-flops com portas lógicas
− Não é necessário o circuito de regeneração
− São mais rápidas do que as DRAM, porém são
Memória ROM
Possui um padrão permanente de dados, que
não pode ser alterado não pode ser alterado
Os dados são gravados na pastilha durante o
processo de fabricação
Memória PROM
O processo de gravação (programação) é
efetuado eletricamente, e pode ser feito pelo fornecedor ou pelo cliente após a fabricação da pastilha
Memória EPROM
Pode ser apagada por um processo óptico
(exposição à radiação UV) (exposição à radiação UV)
O processo de apagamento pode levar 20 min,
e deve ser feito integralmente em todas as células de memória antes da gravação de novos dados
A gravação e leitura de dados é feita A gravação e leitura de dados é feita
Memória EEPROM
Tanto a escrita como o apagamento são feitos
eletricamente eletricamente
Não há necessidade de apagamento integral;
apenas o Byte ou os Bytes endereçados são atualizados
A operação de escrita leva um tempo
consideravelmente maior que a de leitura; da consideravelmente maior que a de leitura; da ordem de centenas de microsegundos por Byte
É mais cara e menos densa que a EPROM Combina não-volatilidade e flexibilidade
Memória Flash
Apresenta características intermediárias entre a
EPROM e a EEPROM EPROM e a EEPROM
− Como a EEPROM, o apagamento é elétrico
− Como a EEPROM, é possível apagar apenas alguns blocos de memória
− Como a EPROM, ela não permite apagar o conteúdo de apenas um Byte
Organização da Memória de semicondutor
Elemento básico: célula de memória
− Exibe dois estados estáveis
− Exibe dois estados estáveis
− Possui três terminais funcionais:
Controle
Dados de
Controle
Célula Célula
Seleção Entradade Seleção Estado
Exemplos de Arranjos Físicos das Células
Exemplo #01: arranjo físico é igual ao arranjo
lógico das palavras na memória – tal como é lógico das palavras na memória – tal como é percebido pela CPU
8 bits P0 P1 EPROM de 8 Mbits (ou 1 MB) 1M Palavras P2 P3 P4 ...
Exemplos de Arranjos Físicos das Células
Formato da pastilha do Exemplo #01:
1 2 3 4 5 6 7 8 9 30 29 28 27 26 25 24 30 31 32 A19 A16 A15 A12 A12 A7 A6 A5 A4 A3 Vcc A18 A17 A14 A13 Vpp A8 A9 A11 Pinos de endereço Pinos de endereço Pino de alimentação Pino de 32 pinos 1,5 cm2 9 10 11 12 13 14 15 16 24 23 22 21 20 19 18 17 A3 A2 A1 A0 D0 D1 D2 Vss Vpp A10 CE D7 D6 D5 D4 D3 Pinos de Dados Pinos de Dados Chip Enable Pino de Terra Pino de programação 20
Exemplos de Arranjos Físicos das Células
Exemplo #02: arranjo em matrizes quadradas
contendo grupos de células contendo grupos de células
... ... ... linhas2048 2048 colunas D e co d if ica d o r d e l in h a DRAM de 16 Mbits (ou 2 MB) ... ... ... ... ... Decodificador de coluna D e co d if ica d o r MUX 11 11 4
Exemplos de Arranjos Físicos das Células
Formato da pastilha do Exemplo #02:
16 pinos 1 2 3 4 5 6 24 23 22 21 20 19 NC D0 D1 Vss Vcc CAS OE A9 D3 D2 Pinos de Dados Pino de Terra Column Address Strobe Pino de Alimentação WE RAS Pinos de Dados Output Enable Row Address Strobe Write Enable 16 pinos 7 8 9 10 11 12 13 14 15 16 19 18 17 A7 A6 A3 A2 A1 A0 A10 A8 A9 A4 A5 Pinos de endereço Pinos de endereço Vcc Vss Enable Pino de Terra Pino de Alimentação Number of Chip
Exemplos de Arranjos Físicos das Células
O arranjo em matrizes quadradas de grupos de
células possibilita pastilhas mais densas células possibilita pastilhas mais densas
A adição de uma linha de endereço faz com
que se a quantidade de linhas e colunas da matriz seja duplicada
A capacidade total de memória da pastilha é,
Organização em Módulos
... ... 512 colunas Pastilha #01 256 K x 1 bit DRAM de ... ... ... ... ... ... Decodificador de Coluna 512 linhas ... ... 512 colunas 9 9 ... 7 2 1 ... ... ... MAR MBR DRAM de 256 KB ... ... ... ... ... ... ... Decodificador de Coluna 512 linhas 9 Pastilha #08 8 7 ...Organização em Módulos
1/512 1 /5 1 2 A 1 1/512 1 /5 1 2 B 1 1/512 1 /5 1 2 C 1 1/512 1 /5 1 2 D 1 MAR 1/512 1/512 1 /5 1 2 A 2 A 1/512 1/512 1 /5 1 2 B 2 B 1/512 1/512 1 /5 1 2 C 2 C 1/512 1/512 1 /5 1 2 D 2 D 9 9 2 8 2 1 ... MBR CE CE CE CE CE CE CE CE 1/512 1 /5 1 2 A 8 1/512 1 /5 1 2 B 8 1/512 1 /5 1 2 C 8 1/512 1 /5 1 2 D 8 2Habilitação Grupo AGrupo B
CE CE
CE CE
Formas de Encapsulamento
Módulos DIP (Dual Inline Package)
Usados em PCs Usados em PCs antigos (XTs, 286s e os primeiros 386) Soldados diretamente na placa mãe ou encaixados individualmente em soquetes disponíveis na placa na placa Upgrade de memória ou substituição de módulos era difícil
Formas de Encapsulamento
Módulos SIMM (Single Inline Memory Module)
− 30 vias 8 MB − 30 vias − 72 vias 8 MB 8 MB 8 MB
Formas de Encapsulamento
Módulos SIMM de 30 vias:
Observações:
− Os µPs 486 e 386DX acessavam a memória usando
palavras de 32 bits
− O µP 386SX acessava a memória usando palavras de 16
Formas de Encapsulamento
Módulos SIMM de 72 vias:
Observações:
− Tanto o µP 486 quanto o Pentium trabalham internamente
com palavras de 32 bits
− No entanto, o µP Pentium acessa a memória usando
Formas de Encapsulamento
Módulos DIMM (Dual Inline Memory Module)
Possuem contatos em ambos
os lados do módulo
Têm 168 vias
Trabalham com palavras
Formas de Encapsulamento
Comparação entre os tamanhos:
Módulo SIMM Módulo DIMM Módulo SIMM de 30 vias Módulo SIMM de 72 vias
Detecção e Correção de Erros
Todo sistema de memória baseado em
semicondutor está sujeito a erros semicondutor está sujeito a erros
Tipos:
− Falhas graves: células são inutilizadas
− Erros moderados: células não são inutilizadas
A maioria dos sistemas de memória principal
modernos inclui uma lógica de detecção e correção de erros
Detecção e Correção de Erros
Um código de correção é caracterizado pelo
número de bits incorretos que ele é capaz de detectar e corrigir em uma única palavra
número de bits incorretos que ele é capaz de detectar e corrigir em uma única palavra
O código de correção de erros mais simples é o
Código de Hamming
Esse código foi projetado por Richard Hamming
Detecção e Correção de Erros
Visualização do Código de Hamming Palavras de 4 bits Diagramas de VennDetecção e Correção de Erros
Sinal de erro Comparação Correção Memória f Saída de dados Entrada de dados M M K' M K K Memória Comparação f K K Resultados possíveis:Projeto de um Código de Correção de
Erro Único (SEC)
K ' M Comparação Memória f K ' M K K + K' = Palavra Síndrome
Se todos os bits da Palavra Síndrome forem 0s, não houve erro
Se todos os bits da Palavra Síndrome forem 0s, não houve erro
Se a Palavra Síndrome contiver apenas um bit 1, ocorreu erro em um dos
bits de teste – nenhuma correção é necessária
Se a Palavra Síndrome contiver mais de um bit 1, o valor numérico da
Palavra Síndrome indica a posição do bit em que ocorreu erro – a palavra é corrigida invertendo-se o valor desse bit de dado
Projeto de um Código de Correção de
Erro Único (SEC)
Como pode ocorrer erro em qualquer um dos M bits de
dados ou dos K bits de teste, deve-se ter:
Bits de teste
Bits de dados Aumento (%)
8 4 50,00
Aumento no tamanho da Palavra com a correção de erros:
16 32 64 128 5 6 7 8 31,25 18,75 10,94 6,25
Projeto de um Código de Correção de
Erro Único (SEC)
Posição do bit10 Posição do bit2 Bits de Teste Bits de Dados 12 11 10 9 8 7 6 0110 0111 1000 1001 1010 1011 1100 C8 M5 M3 M4 M6 M7 M8 C1 = M1 + M2 + M4 + M5 + M7 C2 = M1 + M3 + M4 + M6 + M7 C4 = M2 + M3 + M4 + M8 C8 = M5 + M6 + M7 + M8 Cálculo dos Bits de Teste:
6 5 4 3 2 1 0001 0010 0011 0100 0101 0110 C1 C4 C2 M1 M2 M3 C8 = M5 + M6 + M7 + M8 38
Projeto de um Código de Correção de
Erro Único (SEC)
Exemplo:
M8 M7 M6 M5 M4 M3 M2 M1 0 0 1 1 1 00 0 1
C1 = M1 + M2 + M4 + M5 + M7 = 1 + 0 + 1 + 1 + 0 = 1 C2 = M1 + M3 + M4 + M6 + M7 = 1 + 0 + 1 + 1 + 0 = 1
Cálculo dos Bits de Teste:
C2 = M1 + M3 + M4 + M6 + M7 = 1 + 0 + 1 + 1 + 0 = 1 C4 = M2 + M3 + M4 + M8 = 0 + 0 + 1 + 0 = 1
Projeto de um Código de Correção de
Erro Único (SEC)
Supondo-se um erro em M3,
M8 M7 M6 M5 M4 M3 M2 M1
0 0 1 1 1 1 0 1
C1 = M1 + M2 + M4 + M5 + M7 = 1 + 0 + 1 + 1 + 0 = 1 C2 = M1 + M3 + M4 + M6 + M7 = 1 + 1 + 1 + 1 + 0 = 0
Cálculo dos Bits de Teste:
C2 = M1 + M3 + M4 + M6 + M7 = 1 + 1 + 1 + 1 + 0 = 0
C4 = M2 + M3 + M4 + M8 = 0 + 1 + 1 + 0 = 0
Projeto de um Código de Correção de
Erro Único (SEC)
Cálculo da Palavra Síndrome:
C8 C4 C2 C1 0 1 1 1 0 0 0 1 0 1 1 0 + 610
Conclusão: há um erro na 6a. posição (bit M3)!
M8 M7 M6 M5 M4 M3 M2 M1 0 0 1 1 1 1 0 1 C2 1 C1 1 C4 1 C8 0 1 2 3 4 5 6 7 8 9 10 11 12
Memória Cache
Todos os sistemas de memória atuais
contemplam uma memória cache contemplam uma memória cache
CPU MemóriaCache Memória
Principal Transferência
de Palavras
Transferência de Blocos
Uma memória principal grande e lenta é
combinada com uma memória cache grande e rápida
Memória Cache
Em qualquer instante, um subconjunto dos
blocos da memória principal reside na cache blocos da memória principal reside na cache
0 1 2 3 Blocos (K palavras) Tamanho da Palavra 0 1 2 3 ... Bloco Rótulo K - 1 ... Bloco C - 1 Tamanho do Bloco (K palavras) M = 2n/K Blocos C linhas
Memória Cache
Endereço Área de armazenamento temporário de endereço Processador Memória Cache Controle Controle B a rr a m e n to d o si st e m a Dados Área de armazenamento temporário de dados B a rr a m e n to d o si st e m a 44O Bloco que contém Recebe endereço
RA da CPU INÍCIO
Efetua acesso à memória principal para obter o
Não
Operação de Leitura em Memória Cache
O Bloco que contém o endereço RA está na memória cache?
Obtém o conteúdo da palavra no endereço RA e entrega para a CPU
principal para obter o bloco que contém RA
Aloca linha da cache para o bloco da memória principal Sim Não Carrega o bloco da memória principal na linha da cache Entrega a palavra em RA para a CPU
Elementos de Projeto de Memórias
Cache
Tamanho Função de Política de escrita − Write-through Função de mapeamento − Direto − Associativo − Associativo por conjuntos Algoritmo de − Write-through − Write-back − Write-once Tamanho da linha Número de Caches − Um ou dois níveis Algoritmo de substitução − LRU − FIFO − LFU − Aleatório − Um ou dois níveis − Unificada ou separada 46Tamanho da Cache
Impossível determinar tamanho ideal
− Deve ser grande para que o tempo médio de
− Deve ser grande para que o tempo médio de acesso à memória total seja próximo ao tempo de acesso da memória cache
− Deve ser pequena para que o custo total por bit seja próximo do custo por bit da memória principal
Outros motivos para minimização da cache:
− Quanto maior a cache, maior o número de pinos –
− Quanto maior a cache, maior o número de pinos – e mais lento o endereçamento
Função de Mapeamento
Necessidade
− O número de linhas da cache é menor do que o
− O número de linhas da cache é menor do que o número de blocos da memória principal
Técnicas utilizadas
− Mapeamento Direto
− Mapeamento Associativo
Suposições
000000
1 Byte
Memória principal com 16 MB (224B) Cada Byte é endereçável diretamente Memória principal pode ser vista como
000000 000001 000002 000003 Bloco 0 0000 Bloco (4 Bytes) 000004 000005 000006 000007 Bloco 1 000008 000009 00000A 00000B Bloco 2 00000C 00000D Bloco 3 4M (222) blocos de 4 B
Memória cache de 64 KB, organizada
em 16 K (214) linhas de 4 B
Os dados são transferidos da memória
principal para a cache em blocos de 4B
P0 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13 ... Bloco 222 - 1 0000 ... 00000D 00000E 00000F Bloco 3 FFFFFF FFFFFE FFFFFD FFFFFC ... ... 0001 0002 3FFF P14 P15 P(224- 4) P(224- 3) P(224- 2) P(224- 1)
Mapeamento Direto
Cada bloco da memória principal é mapeado
em uma única linha da cache em uma única linha da cache
O mapeamento é expresso pela equação:
i = j módulo m,
Em que:
i : número da linha da memória cache i : número da linha da memória cache j : número do bloco da memória principal m : número de linhas da memória cache
Mapeamento Direto
Segundo i = j módulo m, cada bloco da
memória principal é assim mapeado em uma linha da memória cache:
memória principal é assim mapeado em uma linha da memória cache:
0, m, 2m, ..., 2S - m
1, m + 1, 2m + 1, ..., 2S - m + 1
0
1
Linha da memória cache Blocos da memória principal mapeados na linha
1, m + 1, 2m + 1, ..., 2S - m + 1
m – 1, 2m – 1, 3m – 1, ..., 2S -1
1
Mapeamento Direto
Cálculo dos blocos:
− Bloco 0 = 000000 − Bloco 0 = 000000 − Bloco 1 = 000004 (000000 + 4 X 000001) − Bloco 2 = 000008 (000000 + 4 x 000002) − Bloco 3 = 00000C (000000 + 4 x 000003) − ... − Bloco N = 000000 + 4 x N
Bloco m = Bloco 214 = Bloco 004000 = 000000 + 4 x
004000 = 010000
Bloco 2S-m = Bloco (222-214) = Bloco (400000 - 004000)=
Mapeamento Direto
Bloco m+1 = Bloco (214+1) = Bloco (004000+1) = Bloco
004001 = 000000 + 4 x 004001 = 010004
Bloco 2S-m+1 = Bloco (222-214+1) = Bloco
(400000- Bloco 2S-m+1 = Bloco (222-214+1) = Bloco
(400000-004000+1) = Bloco 3FC001 = 000000 + 4 x 3FC001 = FF0004
Bloco m-1 = Bloco (214-1) = Bloco (004000-1) = Bloco
003FFF = 000000 + 4 x 003FFF = 00FFFC
Bloco (2m-1) = Bloco (2 x 004000 – 1) = Bloco (008000-1)
= Bloco 007FFF = 000000 + 4 x 007FFF = 01FFFC = Bloco 007FFF = 000000 + 4 x 007FFF = 01FFFC
Bloco (2S-1) = Bloco (222-1) = Bloco (400000-1) = Bloco
Mapeamento Direto
Substituindo os valores, teremos:
000000, 010000, ..., FF0000
000004, 010004, ..., FF0004 0
1
Linha da memória cache Blocos da memória principal mapeados na linha
00FFFC, 01FFFC, ..., FFFFFC
Mapeamento Direto
Interpretação do endereço da memória
principal: principal: Palavra Linha da cache Rótulo w s s - r r No nosso caso:
Identificação de um dentre 2S blocos
No nosso caso: Palavra Linha da cache Rótulo 2 22
Exemplo de Mapeamento Direto 0000 13579246 0004 FFF8 FFFC 00 Rótulo Linha + palavra Dados ... ... FFFC 0000 77777777 0004 11235813 339C FEDCBA98 FFFC 12345678 00 13579246 16 11235813 16 FEDCBA98 FF 11223344 16 12345678 16 0000 0001 3FFE 3FFF 0CE7 Rótulo Dados Númerode linha
8 32 bits ... 0000 0004 FFF8 11223344 FFFC 24682468 FF 8 bits 32 bits 32 bits 56
Rótulo Linha Palavra P0 P1 P2 B0 w r s - r 3'
Exemplo de Leitura no Mapeamento Direto
P2 P3 B0 w r s - r 1 2 3 3 4 ... Comparação Acerto na cache P4j P(4j+1) P(4j+2) P(4j+3) Falha na cache Bj 3 3' 4'
Mapeamento Associativo
Vantagem:
− Oferece maior flexibilidade para escolha do bloco a
− Oferece maior flexibilidade para escolha do bloco a ser substituído quando um novo bloco é trazido para a memória cache
Desvantagem:
− Complexidade do conjunto de circuitos necessários para a comparação simultânea dos rótulos de todas as linhas da memória cache
Mapeamento Direto
Vantagens:
− Simplicidade
− Simplicidade
− Custo baixo de implementação
Desvantagem:
− Se um programa fizer repetidas referências a
palavras em dois blocos distintos, mapeados em uma mesma linha, esses blocos serão trocados continuamente na cache – e a taxa de acertos será continuamente na cache – e a taxa de acertos será baixa
Mapeamento Associativo
Permite que cada bloco da memória principal
seja carregado em qualquer linha da memória cache
seja carregado em qualquer linha da memória cache
Interpretação do endereço da memória
principal:
Palavra Rótulo
w s
Identificação de um dentre 2S blocos
No nosso caso:
Palavra Rótulo
2 22
Mapeamento Associativo
O rótulo corresponde aos 22 bits mais
significativos do endereço significativos do endereço
Exemplos de cálculo de rótulos
− 000000 -> 000000
− 16339C -> 058CE7
− FFFFF4 -> 3FFFFD
− FFFFF8 -> 3FFFFEFFFFF8 -> 3FFFFE
000000 13579246 000004 FFF8 FFFC Endereço Dados Exemplo de Mapeamento Associativo ... ... FFFC 16339C FEDCBA98 3FFFFE 13579246 058CE7 FEDCBA98 3FFFFD 33333333 000000 11223344 3FFFFF 12345678 0000 0001 3FFE 3FFF 3FFD Rótulo Dados Númerode linha
32 bits 163398 1633A0 22 bits ... FFFFF4 33333333 FFFFF8 11223344 FFFFFC 24682468 32 bits 32 bits 22 bits 62
Rótulo Palavra P0 P1 P2 B0 w s 2'
Exemplo de Leitura no Mapeamento Associativo
P2 P3 B0 w s 1 2 2 3 ... Comparação Acerto na cache P(4j+1)P4j P(4j+2) P(4j+3) Bj 2 2' 3'
Mapeamento Associativo por
Conjuntos (de k linhas)
Combina as vantagens do mapeamento direto
e do mapeamento associativo e diminui suas desvantagens
e do mapeamento associativo e diminui suas desvantagens
A memória cache é dividida em v conjuntos,
cada qual com k linhas
m = v x k i = j módulo v
Em que:
i : número do conjunto da memória cache j : número do bloco da memória principal
Mapeamento Associativo por
Conjuntos (de k linhas)
Interpretação do endereço da memória
principal: Identificação de um dentre 2S blocos
principal: Palavra Conjunto Rótulo w s s - d d
Identificação de um dentre 2S blocos
Considerando em nosso caso conjuntos de
duas linhas, temos: duas linhas, temos:
Palavra Conjunto
Rótulo
2 22
Mapeamento Associativo por
Conjuntos (de k linhas)
Segundo i = j módulo v, cada bloco da memória
principal é assim mapeado em um conjunto da memória cache:
principal é assim mapeado em um conjunto da memória cache:
0, v, 2v, ..., 2S - v
1, v + 1, 2v + 1, ..., 2S - v + 1
0
1
Conjunto da memória cache Blocos da memória principal mapeados no conjunto
1, v + 1, 2v + 1, ..., 2S - v + 1
v – 1, 2v – 1, 3v – 1, ..., 2S -1
1
Mapeamento Associativo por
Conjuntos (de k linhas)
Cálculo dos blocos:
− Bloco 0 = 000000 − Bloco 0 = 000000 − Bloco 1 = 000004 (000000 + 4 X 000001) − Bloco 2 = 000008 (000000 + 4 x 000002) − Bloco 3 = 00000C (000000 + 4 x 000003) − ... − Bloco N = 000000 + 4 x N
Bloco v = Bloco 213 = Bloco 002000 = 000000 + 4 x 002000
= 008000
Bloco 2S-v = Bloco (222-213) = Bloco (400000 - 002000)=
Mapeamento Associativo por
Conjuntos (de k linhas)
Bloco v+1 = Bloco (213+1) = Bloco (002000+1) = Bloco
002001 = 000000 + 4 x 002001 = 008004
Bloco 2S-v+1 = Bloco (222-213+1) = Bloco
(400000- Bloco 2S-v+1 = Bloco (222-213+1) = Bloco
(400000-002000+1) = Bloco 3FE001 = 000000 + 4 x 3FE001 = FF8004
Bloco v-1 = Bloco (213-1) = Bloco (002000-1) = Bloco
001FFF = 000000 + 4 x 001FFF = 007FFC
Bloco (2v-1) = Bloco (2 x 002000 – 1) = Bloco (004000-1)
= Bloco 003FFF = 000000 + 4 x 003FFF = 00FFFC = Bloco 003FFF = 000000 + 4 x 003FFF = 00FFFC
Bloco (2S-1) = Bloco (222-1) = Bloco (400000-1) = Bloco
Mapeamento Associativo por
Conjuntos (de k linhas)
Substituindo os valores, teremos:
000000, 008000, ..., FF8000
000004, 008004, ..., FF8004 0
1
Conjunto da memória cache Blocos da memória principal mapeados no conjunto
007FFC, 00FFFC, ..., FFFFFC
Exemplo de Mapeamento Associativo por Conjuntos 0000 13579246 0004 7FF8 7FFC 000 Rótulo Conjunto + palavra Dados ... ... 7FFC 0000 77777777 0004 11235813 339C FEDCBA98 7FFC 12345678 000 13579246 001 11235813 02C FEDCBA98 1FF 11223344 001 12345678 02C 0000 0001 1FFE 1FFF 0CE7 Rótulo Dados Númerode conj.
9 32 bits 001 77777777 1FF 24682468 9 32 bits Dados Rótulo ... 0000 0004 FFF8 11223344 FFFC 24682468 1FF 9 bits 32 bits 32 bits 9 bits 32 bits 70
P0 P1 P2 B0 w s - d 3'
Exemplo de Leitura no Mapeamento Associativo por Conjuntos (de k linhas)
Rótulo Conjunto Palavra
d Comparação P2 P3 B0 w s - d 1 2 2 3 ... C0 C1 C2 d 4 Comparação Acerto na cache P(4j+1)P4j P(4j+2) P(4j+3) Falha na cache Bj 3 3' 4' C(v-1)
Mapeamento Associativo por
Conjuntos (de k linhas)
Casos extremos:
− v = m e k = 1 : mapeamento direto
− v = m e k = 1 : mapeamento direto
− v = 1 e k = m : mapeamento associativo
Configurações comuns:
− v = m/2 e k = 2 : taxa de acertos significantemente maior do que no mapeamento direto
− v = m/4 e k = 4 : pequena melhoria a um custo adicional relativamente pequeno
adicional relativamente pequeno
Algoritmos de Substituição
Quando um novo bloco é trazido para a cache,
um dos blocos existentes deve ser substituído um dos blocos existentes deve ser substituído
No mapeamento direto, não há alternativa –
cada bloco é mapeado em uma única linha
Para os mapeamentos associativo e
associativo por conjuntos, é necessário um algoritmo de substituição
Recomenda-se a implementação em HW, por
Recomenda-se a implementação em HW, por
Algoritmos de Substituição
Algoritmos disponíveis:
− LRU (Menos Recentemente Usado)
− LRU (Menos Recentemente Usado)
Implementação com bits de uso
− FIFO (First In First Out)
Implementação com áreas de armazenamento circular
− LFU (Menos Frequentemente Usado)
Implementação com contadores
− Aleatório
− Aleatório
Apresenta um desempenho apenas levemente inferior
Políticas de Substituição
Antes que um bloco residente na memória
possa ser substituído, é necessário verificar se ele foi alterado na memória cache
possa ser substituído, é necessário verificar se ele foi alterado na memória cache
Se isso não ocorreu, então o novo bloco pode
ser escrito sobre o bloco antigo
Caso contrário, então a memória principal deve
ser atualizada
Problema encontrado:
Problema encontrado:
− A memória principal pode ser utilizada tanto por outros processadores quanto por dispositivos de E/S
Políticas de Substituição
Escrita Direta (write through)
− Todas as operações de escrita são feitas tanto na
− Todas as operações de escrita são feitas tanto na memória quanto na cache
− Vantagem:
A memória principal está sempre atualizada
− Desvantagem:
Políticas de Substituição
Escrita de Volta (write back)
− Escritas são feitas apenas na cache
− Escritas são feitas apenas na cache
− Quando uma linha da cache é atualizada, um bit de
atualização associado a ela é setado em 1
− Quando um bloco vai ser substituído, ele apenas é
escrito de volta na memória principal se o seu bit de atualização estiver setado em 1
− Vantagem:
Minimiza o número de operações de escrita na memória
− Desvantagem:
Partes da memória principal podem ficar inválidas
Políticas de Substituição
Escrita Uma Vez (write once)
− Ideal para sistemas multiprocessados com
− Ideal para sistemas multiprocessados com
memória principal compartilhada
− É uma mistura de write through e write back
− Cada µP escreve a memória principal sempre que o bloco correspondente na cache foi atualizado pela primeira vez (write through)
− Os demais µP são alertados da alteração
− Os demais µP são alertados da alteração
− Outras alterações naquele bloco são realizadas apenas na cache local e o bloco da memória só será atualizado quando o bloco for substituído na cache (write back)
Tamanho da Linha
Tamanho da linha = tamanho do bloco
À medida em que esse número aumenta, À medida em que esse número aumenta,
aumenta inicialmente a taxa de acertos
Entretanto, se esse número aumentar muito, a
taxa de acertos diminuirá
Porque não usar blocos muito grandes:
− Para uma dada capacidade, isso diminuirá o
− Para uma dada capacidade, isso diminuirá o número de linhas na cache
− Cada palava adicional estará mais distante da usada – e a chance de uso será menor
Número de Memórias Cache
Anteriormente, a cache era externa ao µP Com o avanço da eletrônica, tem-se:
Com o avanço da eletrônica, tem-se:
− Cache L1: interna ao µP
− Cache L2: externa ao µP (SRAM)
Unificadas ou Separadas?
− Unificadas (instruções + dados)
− Separadas (uma para instruções e outra para os
− Separadas (uma para instruções e outra para os dados)
− Projetos atuais baseiam-se em caches separadas, por motivos de desempenho junto ao pipeline
Evolução das Memórias Baseadas
em Semicondutores
Memórias Regulares Memórias FPM Memórias EDO Memórias SDRAM Memórias DDR Memórias DDR Memórias DDR2Memórias Regulares
Foram o primeiro tipo de memória usado em micros
PC
Acesso era feito enviando primeiro o endereço RAS e
em seguida o endereço CAS, da forma mais simples possível
Eram fabricadas inicialmente com tempos de acesso
de 150 ns; depois foram fabricadas com tempos de acesso de 120, 100 e 80 ns, para operação com o 286 Utilizadas em computadores XT, 286 e em alguns dos
Utilizadas em computadores XT, 286 e em alguns dos
primeiros 386
Eram encontradas apenas sob a forma de módulos
Memórias FPM (Fast Page Mode)
Transferem dados em rajadas de 4 palavras em uma
mesma linha, ou página
Baseadas na idéia de que os dados são gravados
seqüencialmente na memória
Encontradas na forma de pentes SIMM de 30/72 vias
e com tempos de acesso de 80, 70 e 60 ns
Foram usadas em computadores 386, 486 e nos
primeiros Pentium
Tempos de acesso podem também ser dados em
termos de ciclos de clock da placa mãe
− por exemplo, 5-3-3-3 em um barramento operando a 66 MHz
Memórias FPM (Fast Page Mode)
Uma nova operação de
leitura só pode ser leitura só pode ser iniciada quando a operação anterior é encerrada
Memórias EDO
(Extended Data Output)
Criadas em 1994
Caracterizadas pela existência de um pipeline
Caracterizadas pela existência de um pipeline
interno à memória
− Uma nova leitura pode ser iniciada sem que a
leitura atual tenha terminado
São mais rápidas que as memórias FPM
− por exemplo, 5-2-2-2 em um barramento operando
− por exemplo, 5-2-2-2 em um barramento operando a 66 MHz (ganho de 25 %)
Fabricadas com tempos de acesso de 70, 60 e
50 ns, encapsuladas em pentes SIMM de 72 vias
Memórias EDO
Memórias SDRAM
(Synchronous DRAM)
As memórias anteriores trabalham em seus
próprios ritmos, independentemente do clock da placa mãe
próprios ritmos, independentemente do clock da placa mãe
− Uma FPM projetada para funcionar em placas para
µP 386 e 486 (25/33 MHz) funciona perfeitamente em placas para µP Pentium (66 MHz)
Por isso, elas são tidas como memórias
assíncronas
Todas as ações em uma memória SDRAM
estão sincronizadas com a borda de subida do sinal de clock da placa mãe
Memórias SDRAM
(Synchronous DRAM)
Estrutura: SDRAM de 4M x 4 bits = 2 MB D e co d if ica d o r d e L in h a Lógica de Controle 2048x1024x42048x1024x4 D e co d if ica d o r d e L in h a CKE CLK CS# WE# CAS# RAS# Buffer de Linha Buffer de Saída Buffer de Entrada DQ0 ... DQ3 Registrador de Modo Decodificador de Coluna Decodificador de Coluna Lógica de Controle de Banco Buffer de ColunaMemórias SDRAM
(Synchronous DRAM)
Configuração através do Registrador de Modo Pode-se definir:
Pode-se definir:
− Tamanho das rajadas
− Tipo das rajadas
Seqüenciais Intercaladas
− Latência do CAS
− Modo de operação
Normal
− Modo de escrita em rajadas
Memórias SDRAM
(Synchronous DRAM)
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 BA M0 M1 M2 M3 M4 M5 M6 M7 M8 M9 M10 M11 Tamanho Tamanho da rajada BT Latência Latência do CAS Código Código de Op. WB Reservado M0 M1 M2 M3 M4 M5 M6 M7 M8 M9 M10 M11 M2 M1 M0 Tamanho da rajada M3 = 0 M3 = 1 0 0 0 1 1 0 0 1 2 2 M3 Tipo da rajada 0 Seqüencial 0 0 1 2 2 0 1 0 4 4 0 1 1 8 8 1 0 0 Reservado Reservado 1 0 1 Reservado Reservado 1 1 0 Reservado Reservado 1 1 1 Pág.completa Reservado 0 Seqüencial 1 Intercalada 92Memórias SDRAM
(Synchronous DRAM)
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 BA M0 M1 M2 M3 M4 M5 M6 M7 M8 M9 M10 M11 Tamanho Tamanho da rajada BT Latência Latência do CAS Código Código de Op. WB Reservado M0 M1 M2 M3 M4 M5 M6 M7 M8 M9 M10 M11 M6 M5 M4 Latência do CAS 0 0 0 Reservado 0 0 1 1 0 1 0 2M9 Modo de escrita em rajada 0 Tamanho de rajada programado 1 Escrita em uma só posição
0 1 1 3 1 0 0 Reservado 1 0 1 Reservado 1 1 0 Reservado M8 M7 M6-M0 Modo de operação 0 0 definido Normal
Memórias SDRAM
(Synchronous DRAM)
Configuração do Registrador de Modo se dá
através do comando LOAD MODE REGISTER através do comando LOAD MODE REGISTER
Outros comandos:
− COMAND INHIBIT
Inibe a execução de comandos na SDRAM
− NOP
Previne a emissão de comandos indesejáveis durante
estados de espera estados de espera
− ACTIVE
Abre (ativa) uma linha de um banco para acesso
subsequente
− BA: endereço do banco
Memórias SDRAM
(Synchronous DRAM)
CLK CKE CS# RAS# CAS# • Comando ACTIVE CAS# WE#A0-A10 Endereço da Linha
Memórias SDRAM
(Synchronous DRAM)
Outros comandos (cont.):
− PRECHARGE
− PRECHARGE
Desativa uma linha aberta em um banco
− BURST TERMINATE
Trunca uma rajada em uma operação de leitura ou
escrita
− AUTO REFRESH
Regenera os dados Regenera os dados
− SELF REFRESH
Regenera os dados na ausência do clock
− SDRAM provê seu próprio sinal de clock interno
− READ/WRITE
Memórias
SDRAM
(Synchronous
DRAM)
CLK CKE CS# Comando READ RAS# CAS# WE# Endereço • Comando READ A0-A9 BA Endereço da Coluna Endereço Don’t careA10 Habilitar/desabilitar auto precharge
Memórias SDRAM
(Synchronous DRAM)
CLK NOP READ NOP DADOS DADOS COMANDOS DQComando READ com Latência do CAS (CL) = 1
Memórias SDRAM
(Synchronous DRAM)
CLK READ NOP DADOS DADOS NOP NOP COMANDOS DQDon’t care Indefinido
Memórias SDRAM
(Synchronous DRAM)
CLK DADOS NOP READ NOP DADOS NOP NOP COMANDOS DQDon’t care Indefinido
Memórias SDRAM
(Synchronous DRAM)
Por serem sincronizadas com o clock da placa
mãe, as SDRAM são mais rápidas
Comparação entre SDRAM de 12 ns e EDO de
60ns:
− Barramento operando em 66 MHz:
SDRAM: 5+1+1+1 = 8 ciclos em 4 acessos EDO: 5+2+2+2 = 11 ciclos em 4 acessos
Conclusão: SDRAM é 30% mais rápida que a EDO Conclusão: SDRAM é 30% mais rápida que a EDO
− Barramento operando em 82 MHz:
SDRAM: 5+1+1+1 = 8 ciclos em 4 acessos EDO: 6+3+3+3 = 15 ciclos em 4 acessos
Parâmetros de Especificação
CL/tRCD/tRP/tRAS/CMD
− CL (CAS Latency): intervalo de tempo entre a ativação
− CL (CAS Latency): intervalo de tempo entre a ativação
do CAS e a recepção dos dados
− tRCD: tempo compreendido entre a ativação do RAS e
a ativação do CAS
− tRP: tempo requerido entre o término do acesso de
uma linha e o início do acesso a uma outra
− tRAS: tempo decorrido da recepção do sinal de seleção
de linha no terminal RAS até a sua ativação
de linha no terminal RAS até a sua ativação
propriamente dita
− CMD: define o tempo compreendido entre a seleção de
um banco (CS – Chip Select) e a emissão de um comando ACTIVE
Parâmetros de Especificação
CLK
NOP CLK
ACTIVE NOP NOP READ/
WRITE
Don’t care COMANDOS
tRCD
Parâmetros de Especificação
CLK
BANCO a, COL n
READ
READ NOP CHARGEPRE NOP
COMANDOS BANCO a, COL m ENDEREÇOS tRP 104 DADOS DADOS
Don’t care Indefinido DQ
Parâmetros de Especificação
Exemplo: 2-2-2-5-T1 − CL = 2 (ciclos) − CL = 2 (ciclos) − tRCD = 2 (ciclos) − tRP = 2 (ciclos) − tRAS = 5 (ciclos) − CMD = 1 (ciclo) Parâmetros gravados no módulo Parâmetros gravados no móduloPodem ser mudados
via SETUP da BIOS
Parâmetros de Especificação
Memórias SDRAM são especificadas também
de acordo com a freqüência nominal do barramento, na forma PCxxx
de acordo com a freqüência nominal do barramento, na forma PCxxx
Exemplos
− PC66 → 66 MHz
− PC100 → 100 MHz
Memórias DDR
(Double Data Rate)
Também chamadas de DDR SDRAM
− Transferência de dados se dá na borda de subida e na borda de descida
− Transferência de dados se dá na borda de subida e na borda de descida do clock
Os módulos DIMM DDR e SDRAM são muito
semelhantes, diferenciando-se em:
SDRAM
Módulo tem 168 terminais
Chanfro duplo
Chanfro duplo DDR
Módulo tem 184 terminais
Memórias DDR
CLK DADOS DADOS DADOS NOP READ NOP DADOS NOP NOP COMANDOS DQ 108 Don’t careComando READ com Latência do CAS = 2
Memórias DDR2
Evolução natural das memórias DDR
Transferem dados nas bordas de subida e Transferem dados nas bordas de subida e
descida do sinal de clock (como as DDR)
Diferenças entre DDR2 e DDR:
− Versões encontradas no mercado:
DDR: 266 MHz, 333 MHz e 400 MHz DDR2: 533 MHz, 677 MHz e 800 MHz − Alimentação: DDR: 2,5 V DDR2: 1,8 V (consumos equivalentes)
Memórias DDR2
Diferenças entre DDR2 e DDR (cont.):
− Encapsulamento:
− Encapsulamento:
DDR: Módulos DIMM possuem 184 terminais DDR2: Módulos DIMM possuem 240 terminais
Memórias DDR2
Diferenças entre DDR2 e DDR (cont.):
− Arranjos dos chips nos módulos:
− Arranjos dos chips nos módulos:
DDR: Arranjos TSOP (Thin Small-Output Package) DDR2: Arranjos BGA (Ball Grid Array)
Memórias DDR2
Diferenças entre DDR2 e DDR (cont.):
− Latência do CAS:
− Latência do CAS:
Valores usuais:
− DDR: 2, 2.5 e 3
− DDR2: 3, 4 e 5
− Memórias DDR2 apresentam uma latência
adicional, denominada AL (Additional Latency)
− A latência total é obtida somando-se o AL ao valor de CL
de CL
− Valor de AL é encontrado na documentação técnica da memória
Parâmetros de Especificação
DDR(2)xxx/PC(2)yyyy
− xxx é o dobro da freqüência nominal de clock
− xxx é o dobro da freqüência nominal de clock
suportada pelo chip de memória, em MHz
− yyyy é a taxa de transferência máxima alcançada pelo módulo de memória, em MB/s
Exemplos:
− DDR400 → 200 MHz; PC3200 → 3200 MB/s
− DDR2-667 → 333 MHz; PC2-5400 → 5336 MB/s
− DDR2-667 → 333 MHz; PC2-5400 → 5336 MB/s