0% acharam este documento útil (0 voto)
69 visualizações11 páginas

Hierarquia de Memória - Localidade e Desempenho

Enviado por

JR Martins
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
69 visualizações11 páginas

Hierarquia de Memória - Localidade e Desempenho

Enviado por

JR Martins
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd

Capítulo 4 –

Hierarquia de memória:
Localidade e Desempenho
De todas peças que existem em um computador, nenhuma delas
consegue satisfazer a demanda computacional pela pauta
“memória”. Nenhuma peça consegue ser criada pela humanidade a
ponto de satisfazer a demanda computacional pelo acesso aos
diversos tipos de memórias.

Existem diversos tipos de memórias e uma hierarquia bem grande


delas.

Princípios da localidade
O Princípio da Localidade ajuda a entender como os programas acessam a memória. Ele
se baseia na observação de que programas tendem a acessar as mesmas áreas de
memória repetidamente por curtos períodos (localidade temporal) ou a acessar áreas
próximas umas das outras (localidade espacial).

Ele se divide em dois tipos principais: localidade temporal e localidade espacial.

1. Localidade Temporal

Localidade temporal significa que se você acessa algo na memória agora, há uma boa
chance de que você vai acessar a mesma coisa novamente em breve.

Localidade Temporal de Instruções: Refere-se ao fato de que, uma vez


que uma instrução é executada, há uma alta probabilidade de que a mesma
instrução seja executada novamente em um futuro próximo.

Localidade Temporal de Dados: Refere-se ao fato de que, uma vez que


um dado é acessado, há uma alta probabilidade de que o mesmo dado seja
acessado novamente em um futuro próximo.

2. Localidade Espacial
A localidade espacial se refere à tendência de um programa acessar dados ou instruções
que estão fisicamente próximos uns dos outros na memória.

Localidade Espacial de Instruções: Refere-se ao fato de que, uma vez que uma
instrução é executada, há uma alta probabilidade de que as instruções próximas na
memória também sejam executadas em breve.

Localidade Espacial de Dados: Refere-se ao fato de que, uma vez que um dado é
acessado, há uma alta probabilidade de que os dados próximos na memória também sejam
acessados em breve.
Instrução Estática .VS. Instrução Dinâmica

 Instrução Estática: Refere-se a uma instrução no código fonte do programa.


Cada linha de código que o programador escreve representa uma instrução
estática. A contagem de instruções estáticas pode ser usada para medir o
tamanho do programa.

 Instrução Dinâmica: Refere-se à execução de uma instrução em tempo de


execução. Cada vez que uma instrução estática é executada, ela conta como uma
instrução dinâmica. Portanto, se um programa contém um loop que executa 100
vezes, e há 10 instruções dentro do loop, haverá 10 instruções estáticas e 1.000
instruções dinâmicas.

Resumo

Pense no Princípio da Localidade como duas regras de ouro para programas de


computador:

1. Localidade Temporal: Se você usou algo recentemente, você


provavelmente usará de novo logo.
2. Localidade Espacial: Se você usou algo, você provavelmente usará
algo perto dele logo.

E lembre-se das instruções estáticas e dinâmicas assim:

 Instrução Estática: É o que você escreveu no seu código.


 Instrução Dinâmica: É quantas vezes o computador realmente
executa o que você escreveu.
Características dos sitemas de memória
Podemos começar a classificar as memórias em internas e externas.

Localização
Memórias Internas

1. Registradores da CPU
2. Caches dentro do chio
3. Caches fora do chip
4. Memória RAM (Random Access Memory)
5. Memória ROM (Read-Only Memory)
6. Memória Flash Interna

Memórias Externas

1. Disco Rígido (HDD)


2. Unidade de Estado Sólido (SSD)
3. Armazenamento em Nuvem (Cloud Storage)
4. Etc

Capacidade
A capacidade de memória de um computador é a quantidade total de dados que ele
pode armazenar. Essa capacidade pode ser expressa em termos de número de
palavras ou número de bytes.
Unidade de Transferência
A unidade de transferência refere-se à quantidade de dados que pode ser movidas de
uma só vez entre a memória e o processador, ou entre a memória e dispositivos de
armazenamento em uma única operação.

Palavra

No contexto da arquitetura de computadores, o termo "palavra" não se refere ao sentido


literal de palavras usadas em linguagem natural (como palavras em uma frase). Em vez
disso, "palavra" é um termo técnico específico que se refere a uma unidade de dados
que um processador pode manipular em uma única operação.

O que é uma "Palavra" na Computação?

1. Definição Técnica:
o Uma "palavra" na computação é uma sequência fixa de bits
(bits são os menores unidades de dados em um computador,
representando 0 ou 1).

o O tamanho de uma palavra é determinado pela arquitetura do


processador e pode variar entre sistemas. Comuns tamanhos
de palavras são 8 bits (1 byte), 16 bits (2 bytes), 32 bits (4
bytes), e 64 bits (8 bytes).

Bloco

 Bloco: A unidade de dados transferida entre a memória principal e a


memória cache, ou entre a memória e dispositivos de
armazenamento. Um bloco pode consistir de várias palavras.

o Exemplo: Em muitos sistemas de cache, um bloco pode ser de


64 bytes, contendo várias palavras.

Basicamente uma unidade de transferência é igual ao número de linhas elétricas que


chegam e saem do módulo de memória.
Unidades Endereçáveis
Unidades endereçáveis referem-se ao menor incremento de memória que pode ser
individualmente endereçado pelo sistema de memória. Isso depende da arquitetura do
sistema e pode variar. As duas formas mais comuns de unidades endereçáveis são:

 Byte Endereçável: A unidade básica de memória que pode ser endereçada


individualmente é um byte. A maioria dos sistemas modernos são byte
endereçáveis.

o Exemplo: Em um sistema byte endereçável, cada endereço de


memória refere-se a um único byte.

 Palavra Endereçável: Em alguns sistemas mais antigos ou específicos, a


unidade endereçável pode ser uma palavra (por exemplo, 16 bits, 32 bits, etc.).

o Exemplo: Em um sistema palavra endereçável de 32 bits,


cada endereço de memória refere-se a uma palavra de 32 bits
(4 bytes).

Método de Acesso
Os métodos de acesso referem-se à forma como os dados são recuperados da memória.

Sequencial

 Acesso Sequencial: Os dados são acessados em uma ordem


específica e fixa. Para acessar um dado específico, pode ser
necessário passar por todos os dados anteriores.

o Exemplo: Fitas magnéticas, onde os dados são lidos


sequencialmente.

Direto

 Acesso Direto: Os dados são acessados diretamente, sem a


necessidade de passar por outros dados. Cada bloco de dados tem
um endereço único.

o Exemplo: Discos rígidos (HDDs) e SSDs, onde você pode


acessar diretamente qualquer bloco de dados com base em
seu endereço.

Aleatório

 Acesso Aleatório: Qualquer dado pode ser acessado diretamente


em qualquer ordem. Não há necessidade de passar por outros dados
para acessar o dado desejado.
o Exemplo: Memória RAM, onde qualquer célula de memória
pode ser acessada diretamente.

Associativo

 Acesso Associativo: Os dados são acessados com base no seu


conteúdo em vez de um endereço específico. Usado principalmente
em memórias cache e tabelas de hash.

o Exemplo: Memória cache, onde o dado pode ser acessado


rapidamente com base em um valor de chave.

Análise de Desempenho
Tempo de Acesso

 Tempo de Acesso: É o tempo necessário para acessar uma


localização específica na memória e recuperar o dado armazenado.
Esse tempo inclui tanto a localização do dado quanto a transferência
do dado para o processador.

o Exemplo: Se a memória RAM tem um tempo de acesso de 10


nanosegundos (ns), significa que leva 10 ns para acessar
qualquer dado nela.

Tempo de Ciclo

 Tempo de Ciclo: É o tempo necessário para completar uma


operação de leitura ou escrita na memória, incluindo o tempo de
recuperação (latência) e o tempo necessário para preparar a
memória para a próxima operação.

o Exemplo: Se a memória tem um tempo de ciclo de 20 ns,


significa que após uma operação de leitura/escrita, a memória
estará pronta para a próxima operação após 20 ns.

Taxa de Transferência

 Taxa de Transferência: É a velocidade com que os dados podem


ser transferidos de e para a memória, normalmente medida em bytes
por segundo (B/s) ou bits por segundo (bps).

o Exemplo: Se uma memória tem uma taxa de transferência de


3.2 GB/s, isso significa que pode transferir 3.2 gigabytes de
dados por segundo.
Tipo Físico
Semicondutor

 Semicondutor: Memórias feitas de materiais semicondutores, como


silício, usadas em RAM, ROM, e flash.

o Exemplo: Memória RAM e SSDs são tipos de memórias


semicondutoras.

Magnético

 Magnético: Memórias que usam magnetismo para armazenar dados,


como discos rígidos (HDD) e fitas magnéticas.

o Exemplo: HDDs e fitas de backup são tipos de memórias


magnéticas.

Óptico

 Óptico: Memórias que usam luz para ler e escrever dados, como CDs,
DVDs e Blu-ray.

o Exemplo: Um DVD-ROM é um tipo de memória óptica.

Magneto-óptico

 Magneto-óptico: Combina tecnologias magnéticas e ópticas para


armazenar dados. Usa laser para leitura/escrita e magnetismo para
alterar o estado dos dados.

o Exemplo: Discos magneto-ópticos, utilizados em algumas


aplicações de arquivamento.
Características
Volátil / Não Volátil

 Volátil: Memórias que perdem seus dados quando a energia é


desligada.
o Exemplo: Memória RAM é volátil.

 Não Volátil: Memórias que retêm seus dados mesmo quando a


energia é desligada.
o Exemplo: Memória ROM e SSDs são não voláteis.

Apagável / Não Apagável

 Apagável: Memórias que podem ter seus dados apagados e


regravados.
o Exemplo: Memória flash e RAM são apagáveis.

 Não Apagável: Memórias que não podem ser apagadas ou reescritas


uma vez que os dados foram gravados.
o Exemplo: ROM (Read-Only Memory) é não apagável.

Hierarquia de memória
A hierarquia de memória do IBM z13
Façamos uma analogia:

 Primeiro Nível (Cache L1): Quando um funcionário precisa de um documento, ele


primeiro verifica seu arquivo pessoal na mesa. Este é o acesso mais rápido.

 Segundo Nível (Cache L2): Se o documento não está no arquivo pessoal, ele
verifica a gaveta na sua mesa.

 Terceiro Nível (Cache L3): Se o documento não está na gaveta, ele vai ao arquivo
compartilhado entre os funcionários do departamento.

 Quarto Nível (Cache L4): Se o documento não está no arquivo do departamento,


ele vai ao arquivo central do escritório.

 Quinto Nível (Memória Principal): Se o documento não está no arquivo central,


ele vai ao armazém do escritório.

 Sexto Nível (Memória Secundária): Finalmente, se o documento não está no


armazém, ele precisa ir ao depósito externo.

IBM z13 é um mainframe.

Mainframes são sistemas de computação grandes e potentes e mais confiáveis,


projetados para processar grandes volumes de dados e transações simultâneas. Eles são
essenciais para organizações que precisam de desempenho consistente, segurança
robusta e alta disponibilidade, como bancos, governos e grandes corporações.

O mainframe é um tipo de servidor, não necessariamente uma nuvem ou servidor de


jogos, mas sim usado por empresas para outros processos computacionais.

Princípios de projeto para uma hierarquia de


memória
Princípio da localidade: ... (já foi abordado)

Princípio da Inclusão: Os dados presentes em um nível de cache também devem estar


presentes em todos os níveis de cache superiores. Por exemplo, se um dado está na
cache L1, ele deve estar na cache L2 e na memória principal também.

Princípio da coerência:

 - Coerência vertical

Consistência de dados entre diferentes níveis de cache (por exemplo, L1, L2, L3) e a
memória principal, sempre que os dados são atualizados.

 - Coerência horizontal

Consistência entre caches do mesmo nível em diferentes processadores ou


núcleos, garantindo que todas as cópias de um dado sejam iguais sempre que um
dado é atualizado.
Modelagem de desempenho de uma
hierarquia de memória multinível
A modelagem de desempenho de uma hierarquia de memória multinível envolve
analisar como os diferentes níveis de memória (cache L1, L2, L3, memória principal,
etc.) impactam a eficiência e a velocidade do acesso à memória. A ideia é entender e
otimizar a interação entre esses níveis para melhorar o desempenho do sistema.

1. Latência: Tempo necessário para acessar dados em cada nível de memória.

2. Taxa de Acertos (Hit Rate): Percentual de vezes que os dados necessários são
encontrados em um determinado nível de memória.

3. Taxa de Falhas (Miss Rate): Percentual de vezes que os dados necessários não
são encontrados e precisam ser buscados em níveis inferiores.

4. Penalidade de Falha (Miss Penalty): Tempo adicional necessário para


recuperar os dados de um nível inferior quando ocorre uma falha.

Acesso à memória de dois níveis


No acesso à memória de dois níveis, há uma memória cache (geralmente L1) e a
memória principal (RAM). O desempenho é avaliado considerando a probabilidade de
encontrar dados na cache versus a necessidade de acessar a memória principal.

 Nível 1 (L1 Cache):

 Latência: Muito baixa.


 Taxa de Acertos: Geralmente alta (80-95%).
 Penalidade de Falha: Tempo para acessar a memória principal.

 Memória Principal (RAM):

 Latência: Maior que a cache.


 Taxa de Acertos: Não se aplica, pois este é o nível final.
 Penalidade de Falha: Não se aplica.

Acesso à memória de multinível


O acesso à memória de multinível adiciona mais níveis de cache (L2, L3) antes de
acessar a memória principal. Isso ajuda a reduzir ainda mais a latência média de acesso,
pois os dados são mais frequentemente encontrados em níveis mais próximos do
processador.

 Nível 1 (L1 Cache):

 Latência: Muito baixa.


 Taxa de Acertos: Muito alta.

 Nível 2 (L2 Cache):

 Latência: Baixa, mas maior que L1.


 Taxa de Acertos: Alta (60-80%).

 Nível 3 (L3 Cache):

 Latência: Maior que L2.


 Taxa de Acertos: Média (30-50%).

 Memória Principal (RAM):

 Latência: Maior.
 Taxa de Acertos: Não se aplica.

Você também pode gostar