Arquitetura de Computadores Organização de Memória Anderson L. S. Moreira anderson.moreira@recife.ifpe.edu.br Copyright 2010, IFPE. Creative Commons BY-SA 3.0 license Latest update: 12 de Abr de 2011, Document sources, updates: http://dase.ifpe.edu.br/~alsm 1
Agenda Hierarquia de memória; Gerenciamento de memória virtual; Memória Virtual e memória secundaria; Medidas de desempenho; Algoritmos de alocação; Estrutura de memória virtual; Segmentação e Paginação; Exercícios. 2
Hierarquia de Memória A grande maioria dos sistemas tem memórias rápidas e lentas ao mesmo tempo: O sistema pode ser: Extremamente caro; Insuportavelmente lento; Um sistema de computação pode ser suprido por uma hierarquia de memórias: Mais rápidas mais próximas ao processador (menor capacidade); Mais lentas usadas para armazenar dados e instruções que não estão sendo utilizadas (maior quantidade) Divisão de memórias em hierarquias cria um sistema de desempeno próximo ao da memória mais rápida e custo por byte próximo ao da memória de menor custo. 3
Hierarquia de Memória Sistemas computacionais só tem ganhos de performance se as memórias apresentarem velocidade, preços e tamanhos diferentes. Processador Memória Memória Principal Principal Memória Memória Secundária Memória de 2 níveis Processador Processador Cache Cache Memória Memória Principal Principal Memória Memória Secundária Secundária Memória de 3 níveis 4
Relação de Custo X Velocidade X Tamanho 5
Hierarquia de Memória 6
Observações Memória Secundária: Geralmente memória de disco magnético; Memória Principal e Cache: Geralmente memórias monolíticas (semicondutoras); Até pouco tempo atrás esse tipo de memória eram compostas por núcleos magnéticas de ferrite. 7
Gerenciamento Para que o processador disponha da informação certa no momento necessário, o sistema deve ser suprido de mecanismos que mantenham a organização; Esses mecanismos são: Gerenciadores de memória cache; Desenvolvido em hardware; Gerenciadores de memória virtual; Suportado pelo hardware mas implementado em software; 8
Gerenciamento Memória Virtual Usado quando a capacidade de endereçamento de um processador não corresponde a quantidade de memória principal instalada; Os endereços que o processador gera não são endereços reais mas ponteiros para uma abstração de memória; Atenção! Abstrações não armazenam dados! Endereços gerados devem ser mapeados na memória física disponível. O espaço de endereçamento lógico de um computador pode ser: Menor; Igual; Maior que a memória física instalada! 9
Gerenciamento Memória Virtual Physical address space Virtual address spaces 0xFFFFFFFF I/O memory 3 0xFFFFFFFFF 0xFFFFFFFF 0xC0000000 Kernel I/O memory 2 I/O memory 1 Memory Management Unit 0x00000000 Process1 0x00000000 Flash MMU CPU RAM 1 RAM 0 All the processes have their own virtual address space, and run as if they had access to the whole address space. 0xFFFFFFFF 0xC0000000 Process2 0x00000000 Kernel 0x00000000 Fonte: FreeElectrons France, 2009 10
Gerenciamento Memória Virtual 1º Caso (menor) O exemplo de segmento de memória do 8086. Endereçar 64 KB em 1 MB: Escolhe uma janela (segmento) na memória principal e usa o endereço lógico como um ponteiro para essa janela; 2º Caso (igual) Trivial. O endereço lógico é igual a memória física disponível, portanto a alocação é direta; 3º Caso (maior) Mapeamento é feito, escolhendo porções ou blocos de memória virtual e espelhando-a na memória física disponível: Observar figura a seguir. 11
Gerenciamento Memória Virtual memória virtual endereço virtual processador endereço físico mapeador memória física 12
Memória Virtual e Memória Secundária Memória virtual está muito dependente da memória secundária; A memória secundária armazena uma imagem completa da memória virtual. Pergunta: Se a memória secundária tem uma imagem completa da memória virtual, por que não esquece a memória principal e trabalha diretamente com a memória secundária? 13
Memória Virtual e Memória Secundária Solução: Computador enxergar tudo como uma grande memória virtual. Processador Memória Memória Principal Principal Memória Memória Secundária Gerenciador Memória Memória Virtual Virtual Enquanto as porções de memória virtual sendo usadas forem encontradas na memória principal, não existe problema. Porém se o processador precisar de mais dados do que a encontrada na memória física (usa o mecanismo chamado de swap out). 14
Memória Virtual e Memória Secundária Sistema funciona bem se a grande maioria dos dados estiverem disponíveis e pouquíssimos acessos forem feitos na memória secundária; Caso isso precise ser refeito usa-se o locality of reference (concentração de referências): Referências sucessivas e frequentes a localização restritas 15
Concentração de referências Programas tendem a concentrar-se em pequenas regiões dentro do espaço de endereçamento disponível a cada intervalo de tempo. Frequência de acesso Espaço de endereçamento Dessa forma o número de acessos a memória principal é muito maior que na memória secundária 16
Concentração de referências Razões para esse mecanismo existir: Programas são escritos de forma sequencial, e as próximas instruções a serem executadas estão normalmente na vizinhança da instrução corrente; Programas apresentam laços, que geralmente são curtos e suas instruções são executadas um grande número de vezes; Dados também são organizados sequencialmente (vetores e tabelas); Variáveis de controle do programa são geralmente em pequeno número e acessadas frequentemente. Essa técnica também justifica-se pois usa o seguinte método de atualização caso um dado ou instrução não é encontrado na memória principal: aloca um novo bloco da secundária para principal (grande chances de encontrar!) 17
Concentração de referências Existe um problema: Se toda a memória principal estiver ocupada, onde colocar o novo bloco? 18
Medidas de Desempenho Parâmetro mais comuns para medir desempenho em VM: Custo médio por bit de armazenamento: obtido somando o custo da memória principal e secundária usando imagem da memória virtual e dividindo pelo total de número de bits; Taxa de acertos (hit ratio): probabilidade que um endereço lógico gerado pelo processador refira-se a informação armazenada na memória principal; Tempo de acesso médio: altamente dependente da taxa de acertos, quanto maior a taxa de acertos mais o tempo de acesso a memória virtual aproxima-se do tempo de acesso à memória principal; Utilização de memória: como a memória principal é muito menor que a virtual é essencial que ela seja bem utilizada, ou seja, não deve apresentar espaços vazios ou blocos inúteis. 19
Blocos e movimentação de blocos (swapping) Problemas envolvidos na movimentação de blocos em sistemas de VM: Quando os blocos devem ser movimentados? Onde colocar um novo bloco transferido para a memória principal? Qual o tamanho ideal de um bloco? 20
Blocos e movimentação de blocos (swapping) Quando? Geralmente por demanda; Inicia-se a movimentação de blocos sempre que um dado requerido não estiver disponível na memória principal; Onde? Definido pela política de alocação; Alocação estática; Alocação dinâmica; Quanto? Preemptivos; Não preemptivos; Depende da arquitetura e do sistema de memória. 21
Algoritmos de alocação dinâmica Alocação preemptiva: Realocando blocos ocupados para novas posições; Blocos já alocados na memória principal podem ser deslocados para abrirem um espaço suficientemente grande para abrigar um novo; Uma ou mais regiões ocupadas pode se tornar disponível, deslocando os blocos que a ocupam. A estratégia conta com alocação de dirty blocks para a memória secundária e de clean blocks para a principal. 22
Algoritmos de alocação dinâmica Alocação não-preemptivas: Alocação pode ser feita por blocos de tamanho fixo, pesquisando um espaço (page) na memória livre e assinala-a assim que encontra; Outras técnicas são a best fit e a first fit. Compactação de memória (garbage collection) Alocar os blocos na memória principal de forma a não ficar com espaços vazios entre os blocos e geralmente nas extremidades da memória; Desvantagem: muito tempo na movimentação dos blocos de um lado a outro da memória. Substituição de blocos: Usa a replacement policy, em que maximiza a taxa de acertos de um determinado dado na memória; Quando não encontra um dado na memória aparece o conhecido memory fault. 23
Estrutura de memória virtual endereço virtual endereço físico Endereço lógico de bloco deslocamento Endereço físico de bloco deslocamento Reg base do mapa MAPA DE MEMÓRIA ENDEREÇO DO BLOCO SE A PÁGINA ESTÁ PRESENTE Bits de controle Endereço do bloco ou ponteiro Ponteiro para memória secundária se a página não está presente 24
Mapa de memória É essencial para alocação de blocos na VM para a física; Pode ser implementado em: Registradores de alta velocidade; Memória especial; Memória principal; Ou combinação de todas. Informações contidas: Lista do espaço ocupado; Lista do espaço livre; Diretória da memória secundária. 25
Segmentos e páginas Blocos de memórias podem ser organizados das duas maneiras; Segmentos são blocos de palavras sequenciais logicamente relacionados (subrotinas, pilha, matriz, etc...). Possuem tamanho variável e possui alto coesão; Página é um bloco de palavras de tamanho fixo sem respeitar coesão lógica alguma; Para algoritmos de alocação e substituição a única diferença relevante entre os dois modelos é relacionado ao tamanho que pode ser fixo ou variável. 26
Segmentação (1) Um programa é visto como uma coleção de segmentos e suas ligações; Por possuir coesão lógica é interesse do sistema manter todo um segmento na memória principal; O mapa de memória que assinala endereços físicos na memória principal aos segmentos é chamado de tabela de segmentos; Os elementos dessa tabela: Identificação do segmento; Bit de presença P; P=1 se o segmento está na memória principal; P=0 se o segmento não está presente. Tamanho do segmento; 27
Segmentação (2) Campo de endereço; Se P=1 contém o endereço inicial na memória principal; Se P=0 contém o endereço do segmento a memória secundária; Controle 28
Paginação (1) Associação das páginas a locais na memória chamados de frames; Principal vantagem é poder assinalar qualquer página a um frame sem ter necessidade de procurar um espaço apropriado; O mapa de memória é chamado de tabela de páginas; Elementos; Identificação da página; Bit de presença P; P=1 se a página está na memória principal; P=0 se a página não está presente. Campo de endereço Se P=1 contém a identificação do frame ocupado; Se P=0 contém o endereço da página na memória secundária. Controle 29
Paginação (2) Uma tabela de páginas não contém a identificação do tamanho; A principal desvantagem da paginação: Não respeitam a coesão lógica dos programas e suas fronteiras; Principal vantagem; Fácil de gerenciamento e implementação. Mas afinal qual o melhor modelo? Segmentação ou paginação? 30
Sumário e Pontos Importantes (1) A memória precisa ter uma organização que permita ao computador guardar e recuperar informações quando necessário. Portanto, não basta transferir informações para a memória. É preciso ter como encontrar essa informação mais tarde, quando ela for necessária. Necessidade de um mecanismo. Célula: é a unidade de armazenamento do computador. A memória principal é organizada em células. Célula é a menor unidade da memória que pode ser endereçada (não é possível buscar uma "parte" da célula) e tem um tamanho fixo (para cada máquina). As memórias são compostas de um determinado número de células ou posições. Cada célula é composta de um determinado número de bits. Todas as células de um dado computador têm o mesmo tamanho, isto é, todas as células daquele computador terão o mesmo número de bits. 31
Sumário e Pontos Importantes (2) Cada célula é identificada por um endereço único, pela qual é referenciada pelo sistema e pelos programas. As células são numeradas seqüencialmente, uma a uma, de 0 a (N-1), chamado o endereço da célula. Endereço: é o localizador da célula, que permite identificar univocamente uma célula. Assim, cada célula pode ser identificada pelo seu endereço. 32
Sumário e Pontos Importantes (3) Unidade de transferência é a quantidade de bits que é transferida da memória em uma única operação de leitura ou transferida para a memória em uma única operação de escrita. O tamanho da célula poderia ser igual ao da palavra, e também à unidade de transferência, porém por razões técnicas e de custo, são freqüentemente diferentes. OBS.: Uma célula não significa o mesmo que uma palavra; uma célula não necessariamente contém uma palavra. Palavra: é a unidade de processamento da UCP. Uma palavra deve representar um dado ou uma instrução, que poderia ser processada, armazenada ou transferida em uma única operação. Computadores comerciais (tais como por exemplo, os baseados nos processadores Intel 486) podem ter o tamanho da palavra definido como de 32 bits, porém sua estrutura de memória tem células de 16 bits. 33
A capacidade da MP em bits é igual ao produto do nº de células pelo total de bits por célula. T = N x M T = capacidade da memória em bits N = nº de endereços (como vimos anteriormente, N=2 x sendo x = nº de bits do endereço) M = nº de bits de cada célula Para encontrar a capacidade em bytes Encontrar a capacidade em bits e depois multiplicar por 8 (cada byte contém 8 bits) ou então converter o tamanho da célula para bytes e depois multiplicar pelo número de células. O último endereço na memória é o endereço N-1 ( os endereços começam em zero e vão até N-1). 34
Exercícios (1) Faça um comparativo dos dois modelos de alocação de blocos (segmentação e paginação) levando em consideração: Fragmentação externa; Fragmentação interna; Procure informações referentes a Segmentação paginada. 35
Exercícios (2) 1) Numa MP com 1 kbyte de capacidade, onde cada célula tem 8 bits: a) quantas células tem a MP? b) quantos bits são necessários para representar um endereço de memória? 2) Um computador endereça 1k células de 16 bits cada uma. Pede-se: a) sua capacidade de memória; b) o maior endereço que o computador pode endereçar; 3) A memória de um computador tem capacidade de armazenar 216 bits e possui um barramento de dados de 16 bits. Pede-se: a) o tamanho da célula de memória; 36
Bibliografia Arquitetura de Computadores Pessoais, Raul Weber, 2ª edição; Arquitetura de Computadores, Andrew S. Tannembaum, 8ª edição; Fundamentos de Arquitetura de Computadores, Saib e Weber, 4ª edição; 37