ARQUITECTURA DE
COMPUTADORES
CAPÍTULO V
AULA III
Índice
• Hierarquia de memória
• Fiabilidade e disponibilidade • Detecção e correcção de erros
• Memória Virtual
Hierarquia de Memória
• Nas aulas anteriores vimos como é que a hierarquia de memória funciona, considerando-a quase como infalível.
• Porém, as memórias não são infalíveis e como tal devem ser
implementados mecanismos de redundância e recuperação de erros. • Para tal devemos começar por definir o que é uma falha.
Hierarquia de Memória
• Considere-se dois estados:1. Serviço concluído 2. Serviço interrompido
• A passagem do estado 1 para o estado 2 constituí uma falha. • A passagem inversa, do estado 2 para o estado 1 constitui um
restauro.
• As falhas podem ser permanentes ou intermitentes.
• Falhas permanentes são fáceis de detectar. • Falhas intermitentes são difíceis de detectar.
Hierarquia de Memória
• O conceito de falhas e redundância leva a outros dois conceitos: • Disponibilidade
• Fiabilidade
• A fiabilidade é medida pelo tempo continuo durante o qual todo o serviço é concluído.
• Mean Time To Failure (MTTF) é a métrica utilizada.
• Annual Fair Rate (AFR) é a percentagem de dispositivos que se espera que falhem num ano, considerando um determinado MTTF.
Hierarquia de Memória
• Actualmente, os discos rígidos anunciam qualquer coisa como 1 000 000 horas MTTF.
• Ou seja, 1 000 000 /(24 * 365) = ~114 anos (garantia vitalícia)
• No entanto, se considerarmos um conjunto de 50 000 servidores com 2 discos cada, qual será a média de falhas por ano?
• 24 * 365 = 8760 horas / 1 000 000 = 0.876%
• Em 50 000 x 2 = 100 000 discos, existe a probabilidade de ocorrer uma falha em 876 discos por ano, ou seja, 2.4 discos por dia.
Hierarquia de Memória
• Sempre que ocorre uma falha, existe interrupção do serviço.
• Essa interrupção é medida pelo
mean time to repair
(MTTR)
(tempo médio para recuperar).• O tempo médio entre falhas
(mean time between
failures - MTBF)
é a soma do MTTF com o MTTR. • Assim, a disponibilidade é calculada segundo aseguinte formula:
Segurança
Disponibilidade =
𝑀𝑇𝑇𝐹Hierarquia de Memória
• A fiabilidade e a disponibilidade são mais do que
meros substantivos. São características mensuráveis. • A disponibilidade deverá ser a máxima possível,
sendo a mesma caracterizada atribuindo a técnica dos nove.
• Considerando os 365 dias/ano e os 520 000 minutos contidos nos mesmos:
1 nove : 90% = 36,5 dias em reparação/ano 2 noves: 99% = 3,65 dias em reparação/ano
3 noves: 99,9% = 526 minutos em reparação/ano 4 noves: 99,99% = 52,6 minutos em reparação/ano 5 noves: 99,999% = 5,26 minutos em reparação/ano etc…
Hierarquia de Memória
“I cnduo’t bvleiee taht I culod aulaclty uesdtannrd waht I was rdnaieg. Unisg the icndeblire pweor of the hmuan mnid, aocdcrnig to rseecrah at Cmabrigde Uinervtisy, it dseno’t mttaer in waht oderr the lterets in a wrod are, the olny
irpoamtnt tihng is taht the frsit and lsat ltteer be in the rhgit pclae. The rset can be a taotl mses and you can sitll raed it whoutit a pboerlm.
Tihs is bucseae the huamn mnid deos not raed ervey ltteer
by istlef, but the wrod as a wlohe.Aaznmig, huh? Yaeh and I awlyas tghhuot slelinpg was ipmorantt! See if yuor fdreins can raed tihs too.”
– languagehat.com (original source unknown)
Hierarquia de Memória
• É comum que a ordem dos bits seja trocada durantetransmissões. Por exemplo, podem ser transmitidos os bits 1101001, mas o receptor receber 0101011.
• Se adicionarmos redundância conseguimos detectar e talvez corrigir alguns erros deste tipo.
• A abordagem mais simples será repetir cada bit, ou seja, se enviamos o bit x, passamos a enviar xx. Assim, caso os bits sejam diferentes, sabemos que ocorreu um erro.
• Outra abordagem é transmitir não duas vezes, mas três vezes cada bit, ou seja, em vez de x, transmitir xxx. Detecção de erros
Hierarquia de Memória
• Diz-se que uma sequência de bits é impar sempre que o número de 1s for impar.
• Em contrapartida, diz-se que uma sequência é par, sempre que o número de 1s for par.
• 0110011 ou 0100010 são sequências pares • 0100000 ou 0111000 são sequências impares
• Exemplo: Considere-se a transmissão de w = 100011,
utilizando-se um bit de paridade α, onde wα = 1000111.
• Assumindo que o bit de paridade alinhava sempre a transmissão a uma sequência par, se o resultado recebido fosse impar significava que tinha existido um erro, e pedia-se retransmissão.
Hierarquia de Memória
• Sempre que um bloco
w
α de paridade impar contem um número par de bits errados, não é possível detectar o erro.• Seja
p
a probabilidade de um bit estar errado, aprobabilidade de ocorrer um
flip
entre dois bits de uma sequência é dada por:𝑛 2 𝑝
2(1 − 𝑝)𝑛−2
Detecção de erros – Single Parity Check Code
A probabilidade de cada bit estar errado.
A probabilidade dos
Hierarquia de Memória
• Os blocos de bits são organizados em linhas e colunas, ou seja, matrizes m x n.
• O bit de paridade de cada linha é calculado e acoplado a cada linha antes da transmissão.
• A paridade de cada coluna e o bit de paridade da matriz são também calculados previamente e transmitidos.
• Assim, são calculados m x n + 1 bits de paridade • E, são transmitidos mn x m x n +1 bits.
Detecção de erros – 2D Parity Check
1 1 0 0 0
1 0 1 1 1
0 1 1 1 1
Hierarquia de Memória
• Uma técnica mais avançada do que os bits de
paridade, é a inserção de checksums para detectar erros.
• Uma forma mais básica de checksum é somar toda a word e concatenar o resultado à mesma.
• Existem checksums bem conhecidos tais como:
• CRC - Cyclic Redundancy Check • MD5 – Message Digest 5
Detecção de erros – Checksums
Hierarquia de Memória
• Inventado por Richard Hamming, a técnica da
distância de hamming permite detectar erros em sequências de bits transmitidas, conseguindo, ao contrário das técnicas de paridade, corrigi-los. • Distância de Hamming é igual ao número de bits
distintos entre duas cadeias.
Detecção de erros – Distância de Hamming
0 1 0 0 1 0
1 1 0 0 0 1
Hierarquia de Memória
• Considere o seguinte código:
Detecção de erros – Distância de Hamming
A 0 0 0 0 0 0 B 0 0 1 1 1 1 C 0 1 0 0 1 1 D 0 1 1 1 0 0 E 1 0 0 1 1 0 F 1 0 1 0 0 1 G 1 1 0 1 0 1 H 1 1 1 0 1 0 A distância mínima entre cada sequência é no mínimo 3.
• Significa que consigo detectar e corrigir 1 bit. • Significa que consigo detectar 2 bits mas não
consigo corrigir.
• Significa que não consigo nem detectar nem corrigir mais que 2 bits errados.
Hierarquia de Memória
• Considere o seguinte código:
Detecção de erros – Distância de Hamming
A 0 0 0 0 0 0 B 0 0 1 1 1 1 C 0 1 0 0 1 1 D 0 1 1 1 0 0 E 1 0 0 1 1 0 F 1 0 1 0 0 1 G 1 1 0 1 0 1 H 1 1 1 0 1 0
Se recebermos a sequência 011000 detectamos que existe um erro e dada a distância mínima, vemos que a sequência D (distância = 1) é a mais adequada.
A técnica da distância de Hamming é utilizada nas memórias ECC – Error Correction Code, ou
Índice
• Hierarquia de memória
• Fiabilidade e disponibilidade • Detecção e correcção de erros
• Memória Virtual
Memória Virtual
• Tal como vimos que a cache servia de suporte
intermédio entre os registos e a memória principal, também a memória principal pode servir de cache
entre esta e os discos rígidos.
• A esta técnica é chamada memória virtual.
• Historicamente, existem duas razões principais para utilizar memória virtual:
1. Para permitir a partilha de recursos entre programas diferentes, tal como acontece entre diferentes máquinas virtuais presentes hoje em dia na cloud.
2. Para agilizar a programação, permitindo ultrapassar o limite físico de memória principal.
Memória Virtual
• A partilha de recursos obriga a que cada
programa/máquina virtual tenha os seus recursos bem definidos, de modo a proteger as leituras e
escritas.
• No entanto, essa definição é dinâmica, variando em
runtime
de máquina virtual para máquina virtual.• Dada tamanha flexibilização é necessário compilar cada programa para um excerto de memória próprio, que depois será transcrito pela memória virtual, para endereços físicos.
Memória Virtual
• O processo de transcrição obriga a um sistema de protecção.
• O sistema de protecção previne que ocorram
iteracções, intencionais ou não, entre processos que partilham o mesmo processador, memória, I/O,
Memória Virtual
• A segunda razão para utilizar memória virtual é
permitir a utilização de mais memória do que a que realmente existe fisicamente.
• Esta agilização torna-se possível ao construir
blocos de memória virtual de grandes dimensões, que na prática são constituídos por memória física DRAM e pelos discos rígidos.
• Ao funcionar como cache, a DRAM, permite que não se note problemas de performance.
Memória Virtual
• Um bloco de memória virtual é chamado
page.
• Um miss em memória virtual é chamado
page fault.
• A memória virtual está organizada em endereços
virtuais que depois são traduzidos para endereços físicos através de um processo de mapeamento de endereços.
Memória Virtual
• Em memória virtual um endereço é divido em
virtual
page number
epage offset.
Índice
• Hierarquia de memória
• Fiabilidade e disponibilidade • Detecção e correcção de erros
• Memória Virtual
Paralelismo e Hierarquia
• Com o aumento do número de processadores, surgiu um novo problema de coerência nos dados entre as caches e a memória
.
• Dado que a memória é uma só, é muito fácil
diferentes processadores operarem sobre os mesmos
endereços, mantendo incoerência nos dados, tanto nas caches como na DRAM.
Paralelismo e Hierarquia
• Assim, podemos assumir que existe coerência nos dados quando:
1.O processador P1 escreve para X e depois lê X, sem que entretanto X tenha sido rescrito por outro
processador.
2.O processador P1 escreve para X e, seguidamente o processador P2 lê X, garantindo que lê os últimos dados escritos por P1.
3.As escritas para a mesma localização são
serializadas, ou seja, a ordem de escrita é vista igualmente por todos os processadores.
Paralelismo e Hierarquia
• Num sistema multiprocessador com coerência de caches, estas fornecem mecanismos de migração e replicação de dados partilhados.
• Manter os dados partilhados entre processadores coerentes é de tal forma importante, que estes implementam um protocolo próprio para o efeito, conhecido como
protocolo de coerência de cache
.• O protocolo mais conhecido para manter a coerência de caches é o protocolo de
snooping
(bisbilhotar).• Para cada bloco na cache, é guardada a informação se esse bloco está partilhado com outras caches ou não.
• Os controladores de caches bisbilhotam as caches em modo broadcast para verificar se determinado bloco está
partilhado ou não.