560 likes | 797 Views
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 ” .
E N D
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”. • 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.
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.
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
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
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
Aula de hoje • Hoje vamos ver • Memória cache • Partição de memória • Paginação e Segmentação
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
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
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
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
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)
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.
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
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
Paginação Mapeamento entre os endereço virtuais e físicos
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
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
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
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
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.
Implementação da Paginação Tamanho das páginas
Implementação da Paginação Tamanho das páginas: exemplo
Implementação da Paginação Tamanho das páginas: exemplo
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
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
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
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
Segmentação Uma memória segmentada permite que cada tabela cresça ou encolha independente das outras tabelas
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
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
Segmentação Comparação da técnicas de paginação e segmentação
Implementação da Segmentação • A segmentação pode ser implementada de duas maneiras • Por swapping • Por paginação
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
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