1 / 53

Hierarquia de Memória Arquitetura de Computadores Aula 5 – Memória 28/08/2012

Hierarquia de Memória Arquitetura de Computadores Aula 5 – Memória 28/08/2012. Bruno Iran Ferreira Maciel Mestrando em Ciências da Computação – Cin/UFPE. Revisão da aula passada. Memória principal Definição: “ Parte do computador onde programas e dados são armazenados ” .

jerom
Download Presentation

Hierarquia de Memória Arquitetura de Computadores Aula 5 – Memória 28/08/2012

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Hierarquia de Memória Arquitetura de Computadores Aula 5 – Memória 28/08/2012 Bruno Iran Ferreira Maciel Mestrando em Ciências da Computação – Cin/UFPE

  2. Revisão da aula passada Memória principal • Definição: “Parte do computador onde programas e dados são armazenados”. • Bit (Binary Digit): Unidade básica de memória. 1 Bit pode armazenar os valores 0 ou 1. • É possível realizar duas operações em uma MP: escrita e leitura.

  3. Revisão da aula passada Endereços de memória • Memórias são organizadas em células • Cada célula possui um número associado: endereço • Programas referenciam uma célula a partir deste endereço • Se uma memória possui n células, tais células possuirão os endereços 0 à n – 1.

  4. Revisão da aula passada

  5. Revisão da aula passada • Cálculos com a Capacidade de Memória • O total de bits que podem ser armazenados na referida memória é T, sendo: • T = N x M ou T = 2Ex M • Do exemplo anterior temos: • N = 512 células, M = 8 bits, E = 9 bits, T = 4096 bits • N = 2E ->512 = 29 • T = N x M = 2Ex M = 4096 bits = 4K bits

  6. Memória principal • Exemplo 1 • Uma memória RAM tem um espaço máximo de endereçamento de 16K. Cada célula pode armazenar 16 bits. Qual o valor total de bits que podem ser armazenados nesta memória e qual o tamanho de cada endereço? • Se o espaço máximo endereçável é 2K, então N = 2K • 1 célula = 16 bits. Então: M = 16 bits = 24 bits • N=2E, N=16K=21x1024=21x210=211 • Se N=2E e 211,então: 2E=211 e E=11 • E = quantidade de bits de cada número que expressa um endereçamento, ou seja: os endereços de cada célula são números que têm 11 bits. • T= N x M=211x16=215=32Kbit

  7. Memória principal • Exemplo 2 • Uma memória RAM é fabricada com a possibilidade de armazenar um máximo de 256kbits. Cada célula pode armazenar 8 bits. Qual é o tamanho de cada endereço e qual é o total de células que podem ser utilizadas na RAM? • Total de bits = T = 256K = 28x210= 218 • 1 célula=8bits=M=23 • Sendo T=NxM ,então:N=T/M=218/23=215 • Se N=2E,então:215=2E, E=15 • N = 215= 25x210= 32k

  8. Aula de hoje • Hoje vamos ver • Memória cache • Partição de memória • Paginação e Segmentação

  9. Memória cache

  10. Memória cache • Significado da palavra cache – Lugar seguro para guardar (esconder coisas) • Considerando que a cache só pode ter parte dos dados do nível mais abaixo, por causa do menor tamanho, temos dois problemas: • Como identificar se o dado procurado está na cache e • Se ele estiver na cache, como acessá-lo de forma rápida

  11. Memória cache

  12. Memória cache

  13. Memória cache • Problema: CPUs são mais rápidas que memórias do sistema • CPUs devem esperar vários ciclos p/ que o dado requerido seja carregado • Problema de custo e não de engenharia: é possível construir memórias tão rápidas quanto a CPU (Precisam ficar dentro do chip da CPU). CUSTO MUITO ALTO

  14. Organização da memória

  15. Organização da memória

  16. Partição de Memória

  17. Participação de Memória • Esquema simples para dividir a memória disponível entre os processos • Inicialmente as partições eram de tamanho fixo • Embora as partições fossem de tamanho fixo, elas não necessariamente eram de mesmo tamanho • Cada processo era carregado na menor partição disponível capaz de conté-lo • Problema → desperdício de memória nas partições • Solução → partições de tamanho variáveis

  18. Participação de Memória • Partições de tamanho variável • Memória é alocada de acordo com o tamanho requerido pelo processo • Problema de buracos na memória quando da troca de processos • Necessária a compactação (desfragmentação) da memória → reduz o desempenho do sistema

  19. Participação de Memória • O endereço de um processo varia em cada vez que ele é trazido para a memória • Existe uma distinção entre endereço físico e endereço físico e endereço lógico • Endereço lógico → posição relativa ao início do programa • Endereço físico → designa uma posição na memória principal • Endereço físico → endereço lógico + endereço inicial do processo (endereço base)

  20. Paginação

  21. Paginação • Nada mais e que o uso da swap, ou seja memória virtual, quando sua memória é usada por completo (enchida), o sistema passa para o disco uma porção da informação dos aplicativos que estão em segundo plano contida nos pentes de memória para o disco, afim de abrir mais na memória ram (pentes) para os aplicativos que você está usando em primeiro plano.

  22. Paginação • Idéia → separar os conceitos de espaço de endereçamento e endereços de memória • Bits de endereçamento não são efetivamente relacionados com as palavra de memória disponíveis • Ex: máquina com 4096 palavras de memória e 16 bits de endereço (65536 endereços) • Espaço de endereçamento→conjunto de endereços possíveis, independente da quantidade de posições de memória existente

  23. Paginação • Antigamente • Os endereços que referenciavam as posições de memória acima das posições físicas existente eram inúteis • Existia o espaço de endereçamento útil e o espaço de endereçamento inútil

  24. Paginação Mapeamento entre os endereço virtuais e físicos

  25. Paginação • Paginação → overlay automático do programa na memória principal • Cada overlay é chamada de página • Temos o espaço de endereços virtuais e o espaço de endereços físicos • Um mapa de memória (ou tabela de páginas) relaciona os endereços virtuais com os endereços físicos • É um mecanismo transparente que dá ao programador a ilusão de uma memória principal grande, com endereços contíguos e lineares, do mesmo tamanho do espaço de endereços virtuais

  26. Paginação • O sistema operacional mantém uma tabela de páginas para cada um dos processos em execução • Cada endereço virtual é composto por um número de página e por um endereço relativo dentro dessa • página

  27. Implementação da Paginação • Programas e dados ficam no disco (memória secundária) • Programa no disco → original • Pedaços do programa na memória principal → cópia do original • O programa original deve estar sempre atualizado • O espaço de endereçamento virtual é dividido em • um conjunto de páginas de mesmo tamanho • Tamanho das páginas → 512 a 64Kb

  28. Implementação da Paginação • O espaço de endereçamento físico também é divido em pedaços de mesmo tamanho das páginas • Moldura de páginas → pedaços da memória principal onde as páginas são armazenadas

  29. Implementação da Paginação

  30. Implementação da Paginação

  31. Implementação da Paginação • Endereços gerados pela CPU são divididos em: • Número da página (p) - Usando como um índice em uma tabela de páginas, a qual contém o endereço o endereço base de cada página na memória física. • Deslocamento de página (d) - combinado com o endereço base para definir o endereço na memória física que será enviado para a unidade de memória.

  32. Implementação da Paginação

  33. Implementação da Paginação Tamanho das páginas

  34. Implementação da Paginação Tamanho das páginas: exemplo

  35. Implementação da Paginação Tamanho das páginas: exemplo

  36. Implementação da Paginação • No nosso exemplo temos que mapear endereços virtuais de 32 bits em endereços físicos de 15 bits • 15 bits → 12 bits para o deslocamento dentro da página e 3 bits para determinar em qual moldura está a página

  37. Implementação da Paginação

  38. Implementação da Paginação • A Unidade de Gerenciamento de Memória divide o endereço lógico em duas partes • 20 bits representando o número da página virtual • 12 bits representando o deslocamento na página • O n° da página virtual é usado na tabela de páginas • Primeiro é verificado se a página esta na memória principal através do valor do bit de residência • Se a página estiver na memória é verificada em que moldura de página ela está armazenada • Caso não esteja na memória a página tem que ser buscada

  39. Implementação da Paginação

  40. Segmentação

  41. Segmentação • A paginação é um sistema de memória virtual unidimensional • Seus endereços variam de 0 a um endereço máximo • Para alguns problemas seria interessante a existência de dois ou mais espaços de endereçamento virtual separados • Ex: compilador que gera muitas tabelas • Tabela de símbolos • Tabela com o código-fonte • Tabela de constantes • Pilha

  42. Segmentação

  43. Segmentação • Cada segmento constitui um espaço de endereçamento separado • O crescimento ou encolhimento de um segmento ocorre de maneira independente, não influindo nos outros segmentos • Especificação de um endereço • Composto de duas partes → número de um segmento e um endereço desse segmento

  44. Segmentação Uma memória segmentada permite que cada tabela cresça ou encolha independente das outras tabelas

  45. Segmentação • O segmento é uma entidade lógica e o programa deve estar ciente de sua existência • Vantagens de uma memória segmentada Vantagens de uma memória segmentada • Facilita o trato com estruturas de dados que crescem ou encolhem durante a execução do programa • A modificação de um segmento não acarreta na modificação de nenhum outro segmento (os endereços não se modificam) • Facilita o compartilhamento de procedimento de E/S ou de dados entre vários programas

  46. Segmentação • Segmentos diferente possuem tipo de proteção diferentes • Um segmento de código só pode ser executado, não sendo possível ler ou escrever nesse segmento • Um segmento de dados pode ser lido ou escrito, mas não pode ser executado

  47. Segmentação Comparação da técnicas de paginação e segmentação

  48. Implementação da Segmentação • A segmentação pode ser implementada de duas maneiras • Por swapping • Por paginação

  49. Implementação da Segmentação • Segmentação por swapping • Um conjunto de segmentos deve estar na memória principal • Se um segmento que não estiver na memória for referenciado, ele deve ser carregado na memória • Se a memória estiver cheia, um ou mais segmentos devem ser retirados (atualizando o original, se preciso) da memória para se carregar o novo segmento • Esse esquema é muito parecido com a paginação por demanda

  50. Implementação da Segmentação • Segmentação difere da paginação • Páginas tem um tamanho fixo • Segmentos não possuem tamanho fixo • Tratamento de “buracos” na memória • Mover os segmentos após o buraco, deixando um grande buraco no fim da memória • Ou espera-se que a fragmentação atinja contornos críticos, para então realizar a desfragmentação

More Related