De Rose e Fernando Gehm Moraes 1 Arquitetura de Computadores II - 01/03/05
ARQUITETURA DE COMPUTADORES II UNIDADE 2: GERNCIA DE MEMRIA Contedo: 1 INTRODUO................................................................................................................. 2 1.1 Exemplo da Biblioteca................................................................................................ 2 2. HIERARQUIA DE MEMRIA.......................................................................................... 4 3 GERNCIA DE MEMRIAS CACHE............................................................................... 6 3.1 Mapeamento de endereos em memria cache ........................................................ 6 3.1.1 Mapeamento Direto.............................................................................................. 6 3.1.2 Mapeamento Associativo ..................................................................................... 9 3.1.3 Mapeamento Conjunto associativo .................................................................... 12 Exerccios de dimensionamento de memrias cache .................................................... 15 Cache com mapeamento conjunto associativo (4 conjuntos) ..................................... 16 Cache com mapeamento totalmente associativo........................................................ 16 Cache com mapeamento direto .................................................................................. 17 Cache com mapeamento conjunto associativo (16 conjuntos) ................................... 18 Cache com mapeamento totalmente associativo........................................................ 18 Cache com mapeamento direto .................................................................................. 19 3.2 Integridade dos dados na cache .............................................................................. 20 3.2.1 Write-through (escrevo atravs) ......................................................................... 20 3.2.2 Write-back (escrevo de volta)............................................................................. 21 3.3 Passos para escrita e leitura na cache..................................................................... 21 3.3.1 Leitura ................................................................................................................ 21 3.3.2 Escrita ................................................................................................................ 22 4 GERNCIA DA MEMRIA PRINCIPAL......................................................................... 22 4.1 Histrico da gerncia de memria............................................................................ 23 4.2 O problema da fragmentao de memria............................................................... 24 4.3 Endereamento da memria principal ...................................................................... 24 4.3.1 Endereamento contguo ................................................................................... 25 4.3.2 Endereamento no-contguo............................................................................ 26 4.3.3 Otimizao do endereamento no-contguo (TLB)........................................... 33 4.4 Memria Virtual ........................................................................................................ 34 4.5 Estudo de Casos...................................................................................................... 36 4.5.1 UNIX e SOLARIS............................................................................................... 36 4.5.2 Linux................................................................................................................... 36 4.5.2 IBM OS/2 (hardware Intel).................................................................................. 37 4.5.3 Windows 2000.................................................................................................... 37 5 EXERCCIOS................................................................................................................. 38 Csar A. F. De Rose e Fernando Gehm Moraes 2 Arquitetura de Computadores II - 01/03/05 1 INTRODUO Nos ltimos anos vem se investindo muito no aumento da velocidade dos processadores, que est ocorrendo de forma significativa Porm, a velocidade de processamento de um sistema no determinada somente pela velocidade do processador Pouco adianta um processador muito rpido se a alimentao deste processador com dados no conseguir acompanhar, pelo menos aproximadamente, o mesmo ritmo Como tanto o fornecimento de dados, como o seu posterior armazenamento aps o processamento so efetuados na memria, a velocidade mdia de acesso a memria um componente importante no clculo da velocidade de processamento de um sistema Alm da velocidade, o tamanho da memria importante, j que ela funciona como uma rea de armazenamento temporrio para dados que sero armazenados na memria secundria (discos rgidos, ticos, etc.), que ainda mais lenta Ideal seria: Memria de tamanho ilimitado Memria com um tempo de acesso muito rpido Objetivos so contraditrios Por problemas tecnolgicos, quanto maior a memria mais lento ser o seu tempo de acesso o que faria com que o caso ideal, com a atual tecnologia, no possa ser alcanado Soluo: criar uma iluso para o processador de forma que a memria parea ilimitada e muito rpida. 1.1 Exemplo da Biblioteca Um estudante recebe a tarefa de redigir um trabalho sobre os Sistemas Operacionais encontrados no mercado e suas principais caractersticas Ele se dirige a biblioteca, senta em uma cadeira e inicia sua pesquisa Transferncia 1 minuto Procura 1 minuto Csar A. F. De Rose e Fernando Gehm Moraes 3 Arquitetura de Computadores II - 01/03/05 O algoritmo de acesso neste caso o seguinte: 1. ir at a estante de livros 2. procurar livro desejado 3. levar livro at a cadeira 4. consultar livro 5. se no terminou ir para 1 Considerando que o aluno precisa consultar 10 livros e que leva 1 minuto para buscar cada livro e 1 minuto procurando o livro desejado na estante, ele perderia 20 minutos para fazer o trabalho Isso se no tiver esquecido de consultar alguma coisa e necessitar buscar novamente um livro que j consultou, o que custaria 2 minutos adicionais por livro Agora o aluno procura uma mesa vazia O algoritmo de acesso neste caso o seguinte: 1. ir at a estante de livros 2. procurar livros desejados 3. levar livros at a mesa 4. consultar livros 5. se no terminou ir para 1 Assumindo que a mesa tenha espao suficiente, o aluno pode buscar os 10 livros de uma vez o que custaria 11 minutos (10 para a procura e 1 para a transferncia). Depois so necessrios mais 20 segundos para a consulta dos livros na mesa (1 para a consulta e 1 para a transferncia de cada livro), totalizando 11 minutos e 20 segundos No caso de ter esquecido de algo, o custo para consultar um livro novamente cai para 2 segundos assumindo que ele ainda se encontra na mesa Transferncia 1 minuto Procura 1 minuto Procura 1 segundo Transferncia 1 segundo Csar A. F. De Rose e Fernando Gehm Moraes 4 Arquitetura de Computadores II - 01/03/05 Situaes complicadoras todos os livros que quero no cabem na mesa vou tomar um caf e chega um colega e pega a mesa (s que o trabalho dele sobre Arquitetura de Computadores) Posso ampliar o exemplo incluindo uma camada intermediria: uma folha de resumo entre a mesa e o aluno. Na folha so colocados os trechos dos livros que podem interessar para o trabalho. O acesso a folha mais rpido que a mesa, mas na folha cabem menos informaes, e assim por diante Porque o tempo de acesso melhora na mdia? Localidade trabalho restrito a um grupo de livros. Se o trabalho fosse catalogar todos os livros da estante, sempre estaria tendo que consultar livros que no estariam na mesa e teria que busca-los na estante (Localidade Espacial) de tempos em tempos noto que esqueci de algum dado de um determinado sistema e volto a consultar um livro que j tinha consultado antes (Localidade Temporal) 2. HIERARQUIA DE MEMRIA Iluso de uma memria ilimitada e rpida obtida atravs da utilizao de diversos nveis de acesso (mesmo princpio do exemplo da biblioteca - Localidade) Funciona porque programas que executam na CPU tambm possuem localidade espacial e temporal se um endereo foi referenciado, existe grande probabilidade do endereo seguinte ser referenciado em pouco tempo, Ex: Execuo Seqencial (Localidade Espacial) se um endereo foi referenciado, existe grande probabilidade de ser referenciado novamente em pouco tempo, Ex: Loops (Localidade Temporal) Nveis intermedirios usados para amortizar a diferena de velocidade entre processador e memria L1 L2 Memria Principal Memria Secundria Registradores CPU Maior tamanho Maior velocidade Maior custo (MB) Csar A. F. De Rose e Fernando Gehm Moraes 5 Arquitetura de Computadores II - 01/03/05 Memria j aplica a dcadas o mesmo princpio para acelerar o acesso ao disco rgido (memria secundria) Os dados so transferidos para nveis mais altos a medida que so usados (por demanda), como no exemplo da biblioteca Transferncia entre nveis feita com grupos de palavras (bloco, pgina) pois o custo relativo de transferir um grupo de dados menor do que para uma nica palavra, alm de j antecipar acessos (considerando o principio da localidade espacial) Comparao entre os diferentes tipos de memria Tipo Tempo de Acesso Tamanho Custo (por MB) Registradores Ciclos CPU 32-64 bits --- L1 Ciclos CPU 32-64 Kbytes --- L2 8-35 ns 512Kbytes -2 Mbytes 50 Us$ principal 40-120 ns 64 Mbytes 1 Gbyte 1 Us$ secundria 5 ms 6 Gbytes-128 Gbytes 0.02 Us$ Para movimentao de dados entre nveis necessito Mecanismos e para algumas decises estratgicas que tem que ser tomadas os mecanismos usam Polticas Ex: preciso mover dados para um nvel superior que j est cheio. Quem retirar? Deciso errada (ou ruim) pode afetar desempenho do sistema como um todo. Se os mecanismos conseguirem manter a os dados usados pelo processador nos nveis mais altos na maior parte dos acessos, o tempo mdio de acesso a memria como um todo ser prximo do tempo de acesso a estes nveis Algumas definies importantes Hit dado encontrado no nvel procurado Miss dado no encontrado no nvel procurado Hit-rate (ratio) percentual de hits no nvel, Ex: 70% Miss-rate (ratio) percentual de misses no nvel, Ex: 30% (complementar ao Hit-rate) Hit-time tempo de acesso ao nvel incluindo tempo de ver se hit ou miss Miss-penalty tempo mdio gasto para que o dado no encontrado no nvel seja transferido dos nveis mais baixos (inclui tempo de substituio caso necessrio) Exerccio: calcule o tempo mdio efetivo de acesso a uma memria cache considerando Hit-ratio = 80%, Hit-time = 2 s e Miss-penalty = 10 s Tme = Hit-time + (1- Hit-rate)* Miss-penalty Tme = 2 + (1 0.8) * 10 = 2 + 0.2 * 10 = 2 + 2 = 4 s Vamos analisar os nveis de cache e de memria principal com mais detalhes Csar A. F. De Rose e Fernando Gehm Moraes 6 Arquitetura de Computadores II - 01/03/05 3 GERNCIA DE MEMRIAS CACHE Significado da palavra cache Lugar seguro para guardar (esconder) coisas Considerando que a cache s pode ter parte dos dados do nvel 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 rpida O processador no sabe que est sendo enganado e gera um endereo para um espao de endereamento que no necessariamente existe fisicamente Enderear a cache com este endereo no faz nenhum sentido (na maioria dos casos a cache nem teria essa posio gerada por ser muito menor) Uma varredura seqencial tambm no uma soluo aceitvel, pelo tempo que levaria (no esquecer que o objetivo acelerar o acesso) 3.1 Mapeamento de endereos em memria cache O termo mapeamento usado para indicar o relacionamento dos dados do nvel inferior com as posies da memria cache (como o endereo fornecido pelo processador tem que ser transformado para poder ser usado no acesso uma memria cache) Sero vistas trs formas de mapeamento de memrias cache Direto Associativo Conjunto associativo 3.1.1 Mapeamento Direto Forma mais simples de mapeamento Posio na cache depende do endereo da palavra Cada palavra possui uma posio fixa na cache Como tenho menos espao na cache do que no nvel inferior, um grupo de palavras mapeado na mesma posio da cache Este mapeamento dado diretamente atravs de uma operao no endereo que se est procurando Exemplo de operao: endereo mod nmero de posies da cache (mdulo o resto da diviso inteira) Para uma cache de 4 posies e uma memria com 32 endereos teramos (palavra de 8 bits): Csar A. F. De Rose e Fernando Gehm Moraes 7 Arquitetura de Computadores II - 01/03/05 00 01 10 11 0 1 2 3 0 1 2 3 ... 31 00000 00100 11100 Cada posio da cache pode ter 8 posies da memria Pergunta: como podemos obter rapidamente o mapeamento? Utilizando os dois bits menos significativos do endereo Pergunta: Como saber qual das possveis palavras est realmente na cache? Se faz necessrio um TAG (rtulo) de identificao para cada posio da cache No exemplo poderia usar os bits mais significativos que sobraram Pergunta: S isto j basta? No, ainda necessrio um bit de validade que indique se a posio da cache est ocupada ou se contm lixo Dessa forma a cache de mapeamento direto do exemplo tem a seguinte estrutura Bit de Validade Tag Dado 1 001 00110110 0 0 1 000 11100011 Passos para um acesso 1. Calculo o mdulo do endereo que procuro pelo nmero de posies da cache (ou uso os bits menos significativos do endereo) 2. Verifico o bit de validade da posio da cache correspondente e se for invalido acuso miss (vou para 4), seno verifico o Tag 3. Se Tag diferente do endereo procurado acuso miss (vou para 4), seno tenho hit e leio a posio (fim) 4. Busco o dado no nvel inferior coloco na posio e efetuo a leitura (fim) Diviso de bits no registrador de endereamento Exemplo de uma cache com 1024 linhas (2 10 ) com palavra de 32 bits Csar A. F. De Rose e Fernando Gehm Moraes 8 Arquitetura de Computadores II - 01/03/05 22 bits 10 bits Endereo 32 bits (4 Giga) Dados Tag Vlido 0 1 . . . 1023 Hit 22 bits Dados 32 bits Tag Linha = Neste caso o espao de endereamento tem 4 Gigabytes (2 32 ) Pergunta: J vimos que na realidade so transferidos blocos entre nveis. Como ficaria a diviso de bits neste caso? Exemplo de uma cache com 1024 linhas (bloco com 4 palavras de 32 bits) 20 bits 10 bits Endereo 32 bits (4 Giga) Dados Tag Vlido 0 1 . . . 1023 Hit 20 bits Dados 32 bits 2 bits Mux Tag Linha P = Pergunta: Considere agora um espao de endereamento de 1 Giga. Como ficaria a diviso de bits para uma cache de 2048 posies que trabalhe com blocos de 8 palavras? 16 (Tag) 11 (Linha) 3 (Palavra) Endereo de 30 bits (1 Giga) Csar A. F. De Rose e Fernando Gehm Moraes 9 Arquitetura de Computadores II - 01/03/05 Pergunta: Quanto se tem efetivamente de dados nessa cache? (Bit de validade + Tag + Dados) * linhas = (1+16+(8*32)) = 273 bits dos quais 8*32 = 256 so dados. 256 * 100 / 273 = 93.77% (regra de trs para uma linha) Exerccio de mapeamento Parnteses representam contedo da posio Cache Mapeamento Direto H Contedo da cache MP M 0 1 2 3 154 M (154) 68 M (68) 34 M (34) 67 M (67) 154 M (154) 100 M (100) 67 H " (67) 68 M (68) 69 M (69) 70 M (70) 68 H (68) 34 M (68) (69) (34) (67) 2 Vantagens/Desvantagens dessa tcnica de mapeamento Barato (hardware) Posso ter um mau aproveitamento Procura simples (posio fixa calculada) das posies da cache (dependendo dos endereos gerados) Escolha da vtima no existe ( dada pelo mdulo) Uso parte da rea da cache para controle Simplicidade / Velocidade Como poderia melhorar o mapeamento apresentado? Como retirar a dependncia entre o endereo na memria e a posio da cache sem comprometer o desempenho da procura? No d. Uso artifcio para acelerar procura. 3.1.2 Mapeamento Associativo Endereo da memria em qualquer endereo da cache (100% de aproveitamento). Conseqncias: Tenho que fazer procura 1 (validade) 16 (tag) 8*32 (bloco de dados) Linha da Cache Csar A. F. De Rose e Fernando Gehm Moraes 10 Arquitetura de Computadores II - 01/03/05 Preciso poltica de substituio (Quando tenho miss e busco no nvel mais abaixo, caso a cache j esteja cheia quem tirar para abrir lugar?) Soluo para a procura: procura em paralelo. Uso memria associativa Memria cara e de tamanho limitado Soluo para a substituio: uso poltica Possibilidades Randmica: escolho aleatoriamente uma posio a ser substituda LFU (Least Frequent Used) - a posio da cache que foi usada menos vezes ser substituda (menos freqentemente usada) preciso incrementar um contador a cada acesso e comparao para escolha LRU (Least Recent Used) - a posio da cache que foi usada a mais tempo ser substituda (menos recentemente usada) preciso incrementar um contador a cada acesso e comparao para escolha Quero aproximao do melhor caso sem perder tempo Passos para um acesso 1. Alimento a memria associativa com o Tag procurado 2. Se o Tag procurado no est na memria associativa tenho miss (vou para 4) 3. Seno tenho hit e acesso a memria cache com o ndice fornecido pela memria associativa e efetuo a leitura (fim) 4. Se no existir posio livre na cache escolho um endereo para substituir (LRU) Csar A. F. De Rose e Fernando Gehm Moraes 11 Arquitetura de Computadores II - 01/03/05 5. Busco o endereo procurado no nvel mais baixo e coloco em uma posio livre (ou escolhida) da cache cadastrando essa posio e Tag na memria associativa e efetuo a leitura (fim) Diviso de bits no registrador de endereamento Exemplo de uma cache com 1024 posies (2 10 ) com palavra de 32 bits Neste caso o espao de endereamento tem 4 Gigabytes (2 32 ) Tag 1 32 bits Endereo 32 bits (4 Giga) Dados 0 . . . 1023 Hit Dados 32 bits Memria Associativa 1 0 . . . 1023 Tag Pergunta: J vimos que na realidade so transferidos blocos entre nveis. Como ficaria o Hardware neste caso? Exemplo de uma cache com 1024 posies (bloco com 4 palavras de 32 bits) 1 Tag 30 bits Hit Memria Associativa 1 0 . . . 1023 2 bits Dados Dados 32 bits Mux 0 . . . 1023 Endereo 32 bits (4 Giga) Tag P Csar A. F. De Rose e Fernando Gehm Moraes 12 Arquitetura de Computadores II - 01/03/05 Pergunta: Considere agora um espao de endereamento de 256 Mega. Como ficaria a diviso de bits do endereo para uma cache de 2048 posies que trabalhe com blocos de 8 palavras ? Pergunta: Quanto se tem efetivamente de dados nessa cache? 100% Pergunta: Qual o tamanho da memria associativa? 2048 * 25 (tag) = 51200 bits / 8 = 6400 bytes / 1024 = 6,25 Kbytes Exerccio de mapeamento Parnteses representam contedo da posio Cache Mapeamento Associativo H Contedo da cache MP M 0 1 2 3 154 M (154) 68 M (68) 34 M (34) 67 M (67) 154 H (154) 100 M (100) 67 H " (67) 68 M (68) 69 M (69) 70 M (70) 68 H (68) 34 M (69) (70) (68) (34) 3 Vantagens/Desvantagens dessa tcnica de mapeamento Memria associativa tem alto custo e tamanho limitado Melhor aproveitamento das posies da cache, depois de cheia, 100% de aproveitamento Limita o nmero de linhas da cache Dados de controle no ocupam Necessito poltica de substituio espao da cache (esto em rea separada) Custa tempo Pode escolher mal Limite de tamanho da cache por causa da memria associativa uma restrio muito forte, j que uma das tendncias hoje exatamente o aumento do tamanho da cache Qual seria outra possibilidade? Como poderia juntar as vantagens dos dois mtodos vistos at agora? 3.1.3 Mapeamento Conjunto associativo Compromisso entre mapeamento direto e totalmente associativo Cache dividida em S conjuntos de N blocos/palavras 25 (Tag) 3 (Palavra) Endereo de 28 bits (256 Mega) Csar A. F. De Rose e Fernando Gehm Moraes 13 Arquitetura de Computadores II - 01/03/05 Se S = 1 tenho mapeamento associativo e se S = nmero de blocos/palavras da cache tenho o mapeamento direto O endereo i da memria principal pode mapear para qualquer endereo no conjunto (i mod S) da cache Tenho que fazer procura dentro do conjunto Preciso poltica de substituio (Quando tenho miss e busco no nvel mais abaixo, caso o conjunto j esteja cheio quem tirar para abrir lugar?) Passos para um acesso 1. Calculo o mdulo do endereo que procuro pelo nmero de conjuntos S da cache (ou uso os bits menos significativos do endereo) 2. Alimento a memria associativa deste conjunto com o Tag procurado 3. Se o Tag procurado no est na memria associativa tenho miss (vou para 5) 4. Seno tenho hit e acesso memria cache com o ndice fornecido pela memria associativa e efetuo a leitura (fim) 5. Se no existir posio livre no conjunto escolho um endereo para substituir (LRU) 6. Busco o endereo procurado no nvel mais baixo e coloco em uma posio livre (ou escolhida) da cache cadastrando essa posio e Tag na memria associativa do conjunto e efetuo a leitura (fim) Diviso de bits no registrador de endereamento Exemplo de uma cache com 1024 posies (2 10 ) com palavra de 32 bits e 2 conjuntos (S=2) 1 31 bits Dados 0 . . . 1023 Hit Dados 32 bits Memrias Associativas 1 bit 1 0 512 1 0 512 Endereo 32 bits (4 Giga) Tag C Neste caso o espao de endereamento tem 4 Gigabytes (2 32 ) Pergunta: Quanto se tem efetivamente de dados nessa cache? 100% Csar A. F. De Rose e Fernando Gehm Moraes 14 Arquitetura de Computadores II - 01/03/05 Pergunta: Qual o tamanho das memrias associativas? Duas MAs de 512 * 31 (tag) = 15872 bits / 8 = 1984 bytes / 1024 = 1,93 Kbytes Como ficaria a mesma cache com 4 conjuntos (S=4)? 1 30 bits Dados 0 . . . 1023 Hit Dados 32 bits Memrias Associativas 2 bits Tag 1 0 256 Tag 1 0 256 Endereo 32 bits (4 Giga) Tag C Pergunta: Qual o tamanho das memrias associativas? Quatro MAs de 256 * 30 (tag) = 7680 bits / 8 = 960 bytes / 1024 = 0,94 Kbytes Pergunta: J vimos que na realidade so transferidos blocos entre nveis. Como ficaria a diviso do endereo de uma cache conjunto associativa de 4 conjuntos com 2048 posies (bloco com 4 palavras de 32 bits) Exerccio de mapeamento Parnteses representam contedo da posio Cache Mapeamento Conjunto Associativo 2 Conjuntos Contedo da cache H Conjunto 1 Conjunto 2 MP M 0 1 2 3 154 M (154) 68 M (68) 34 M (34) 67 M (67) 154 M (154) 100 M (100) 67 H " (67) 68 M (68) 69 M (69) 70 M (70) 68 H (68) 34 M (34) (68) (67) (69) 2 28 (Tag) 2 (Conjunto) 2 (Palavra) Endereo de 32 bits (4 Giga) Csar A. F. De Rose e Fernando Gehm Moraes 15 Arquitetura de Computadores II - 01/03/05 Quantidade de associatividade de uma cache dada pelo nmero de Vias (Ways) Exemplo: uma cache de 8 posies pode ter de 1 a 8 vias (ways) Vias / Ways Mapeamento Desenho 1 2 4 8 Direto Conjunto-associativo (2 conjuntos) Associativo Conjunto-associativo (4 conjuntos) Exerccio: Quantos conjuntos possui a cache L1 4-Way de 64 Kbytes de um processador Ultra Sparc III (assumir bloco de 32 palavras de 64 bits)? A famlia Ultra Sparc utilizada nas estaes SUN (A verso III possui um pipeline com 14 estgios Superpipeline) Resposta: tamanho do bloco = 32 * 64 bits = 2048 bits = 256 bytes = 0,25 Kbytes 64 Kbytes / 0,25 Kbytes = 256 blocos / 4 (4-Way = quatro blocos por conjunto) = 64 conjuntos cache conjunto-associativa com 64 conjuntos Vantagens/Desvantagens dessa tcnica de mapeamento Aumento o tamanho da cache mantendo o tamanho da memria associativa (limitao tecnolgica ou custo) Memria associativa tem alto custo e tamanho limitado Bastante flexvel Necessito poltica de substituio Custa tempo Pode escolher mal Uso a totalidade da rea da cache para dados (os bits de controle esto nas memrias associativas) Tempo de acesso maior (clculo + consulta associativa) Dependendo da gerao de endereos no aproveito a totalidade das posies da cache Exerccios de dimensionamento de memrias cache 1) A rea de memria disponvel para implementao de uma cache L2 512 Kbytes. Considerando que a memria a ser endereada possui 64 Mbytes (2 26 ) e a cache 53 (Tag) 6 (Conjunto) 5 (Palavra) Assumindo um endereamento de 64 bits Csar A. F. De Rose e Fernando Gehm Moraes 16 Arquitetura de Computadores II - 01/03/05 deve trabalhar com blocos de 16 palavras de 32 bits calcule para a tcnica direta, totalmente associativa e conjunto associativa (4 conjuntos): Diviso de bits do endereo Aproveitamento efetivo da rea da cache (relao entre dados e controle) Nmero de linhas da cache Quantidade e tamanho em Kbytes das memrias associativas (quando necessrio) Cache com mapeamento conjunto associativo (4 conjuntos) Diviso de bits do endereo: Aproveitamento efetivo: 100% (s dados na cache, controle fica nas MAs) Nmero de linhas da cache: Tamanho da linha? Cada linha tem bloco de 16 palavras de 32 bits = 16 * 32 = 512 bits / 8 = 64 bytes Quantas linhas cabem na cache? Cache tem 512 Kbytes = 512 * 1024 = 524288 bytes / 64 = 8192 linhas Tamanho das memrias associativas: Quantas? Uma para cada conjunto, ou seja 4 Tamanho de cada uma? Cada linha da MA tem tamanho do Tag = 20 bits O nmero de linhas da MA igual ao nmero de linhas da cache que ela enderea. Como a cache tem 8192 e so 4 MAs, cada MA enderea 8192 / 4 = 2048 linhas Uma MA tem ento 2048 (linhas) * 20 (tag) = 40960 bits / 8 = 5120 bytes / 1024 = 5 Kbytes Cache com mapeamento totalmente associativo Diviso de bits do endereo: Aproveitamento efetivo: 100% (s dados na cache, controle fica nas MAs) Nmero de linhas da cache: Tamanho da linha? Cada linha tem bloco de 16 palavras de 32 bits = 16 * 32 = 512 bits / 8 = 64 bytes Quantas linhas cabem na cache? Cache tem 512 Kbytes = 512 * 1024 = 524288 bytes / 64 = 8192 linhas 20 (Tag) 2 (Conjunto) 4 (Palavra) Endereo de 26 bits (64 Mbytes) Endereo de 26 bits (64 Mbytes) 22 (Tag) 4 (Palavra) Csar A. F. De Rose e Fernando Gehm Moraes 17 Arquitetura de Computadores II - 01/03/05 Tamanho das memrias associativas: Quantas? Uma nica memria associativa Tamanho da MA? Cada linha da MA tem tamanho do Tag = 22 bits O nmero de linhas da MA igual ao nmero de linhas da cache que ela enderea. Como a cache tem 8192 a MA enderea 8192 linhas Uma MA tem ento 8192 (linhas) * 22 (tag) = 180224 bits / 8 = 22528 bytes / 1024 = 22 Kbytes Cache com mapeamento direto Nmero de linhas da cache: Tamanho da linha? Cada linha tem um bit de validade, os bits de Tag e bloco de 16 palavras de 32 bits O problema o tamanho do Tag pois como ele depende do nmero de linhas da cache que o que estou calculando tenho que experimentar ... 1) com 12 bits para linha (podendo enderear 4096 linhas da cache) Tamanho da linha = 1+10 (Tag)+512 = 523 bits / 8 = 65,37 bytes Quantas linhas cabem na cache? Cache tem 512 Kbytes = 512 * 1024 = 524288 bytes / 66 = 7943,75 linhas 2) com 14 bits para linha (podendo enderear 16384 linhas da cache) Tamanho da linha = 1+8 (Tag)+512 = 521 bits / 8 = 65,12 bytes Quantas linhas cabem na cache? Cache tem 512 Kbytes = 512 * 1024 = 524288 bytes / 66 = 7943,75 linhas 3) com 13 bits para linha (podendo enderear 8192 linhas da cache) Tamanho da linha = 1+9 (Tag)+512 = 522 bits / 8 = 65,25 bytes Quantas linhas cabem na cache? Cache tem 512 Kbytes = 512 * 1024 = 524288 bytes / 66 = 7943,75 linhas Cache tem 7944 linhas e Tag = 26 (endereo) 4 (palavra) 13 (linha) = 9 Diviso de bits do endereo: Aproveitamento efetivo: Dados em cada linha: um bloco de 16 palavras de 32 bits = 512 bits Tamanho total da linha: 1 (validade) + 9 (Tag) + 512 (bloco) = 522 bits Percentual de aproveitamento: 522 100% 512 ?% (uso para dados) Aproveitamento efetivo = 512 * 100 / 522 = 98,08% Tamanho das memrias associativas: No utiliza MAs 1 (Validade) ? (Tag) 512 (Bloco) Contedo da linha 9 (Tag) 13 (Linha) 4 (Palavra) Endereo de 26 bits (64 Mbytes) Poucos bits!!! Muitos bits!!! OK!!! Csar A. F. De Rose e Fernando Gehm Moraes 18 Arquitetura de Computadores II - 01/03/05 2) A rea de memria disponvel para implementao de uma cache L2 256 Kbytes. Considerando que a memria a ser endereada possui 256 Mbytes (2 28 ) e a cache deve trabalhar com blocos de 8 palavras de 16 bits calcule para a tcnica direta, totalmente associativa e conjunto associativa (16 conjuntos): Diviso de bits do endereo Aproveitamento efetivo da rea da cache (relao entre dados e controle) Nmero de linhas da cache Quntidade e tamanho em Kbytes das memrias associativas (quando necessrio) Cache com mapeamento conjunto associativo (16 conjuntos) Diviso de bits do endereo: Aproveitamento efetivo: 100% (s dados na cache, controle fica nas MAs) Nmero de linhas da cache: Tamanho da linha? Cada linha tem bloco de 8 palavras de 16 bits = 8 * 16 = 128 bits / 8 = 16 bytes Quantas linhas cabem na cache? Cache tem 256 Kbytes = 256 * 1024 = 262144 bytes / 16 = 16384 linhas Tamanho das memrias associativas: Quantas? Uma para cada conjunto, ou seja 16 Tamanho de cada uma? Cada linha da MA tem tamanho do Tag = 21 bits O nmero de linhas de cada MA nessa tcnica igual ao nmero de linhas do conjunto que ela enderea. Como a cache tem 16384 linhas e so 16 MAs, cada MA enderea 16384 / 16 = 1024 linhas Uma MA tem ento 1024 (linhas) * 21 (tag) = 21504 bits / 8 = 2688 bytes / 1024 = 2.625 Kbytes Cache com mapeamento totalmente associativo Diviso de bits do endereo: Aproveitamento efetivo: 100% (s dados na cache, controle fica nas MAs) 21 (Tag) 4 (Conjunto) 3 (Palavra) Endereo de 28 bits (256 Mbytes) Endereo de 28 bits (256 Mbytes) 25 (Tag) 3 (Palavra) Csar A. F. De Rose e Fernando Gehm Moraes 19 Arquitetura de Computadores II - 01/03/05 Nmero de linhas da cache: Tamanho da linha? Cada linha tem bloco de 8 palavras de 16 bits = 8 * 16 = 128 bits / 8 = 16 bytes Quantas linhas cabem na cache? Cache tem 256 Kbytes = 256 * 1024 = 262144 bytes / 16 = 16384 linhas Tamanho das memrias associativas: Quantas? Uma nica memria associativa Tamanho da MA? Cada linha da MA tem tamanho do Tag = 25 bits O nmero de linhas da MA nessa tcnica igual ao nmero de linhas da cache que ela enderea. Como a cache tem 16384 a MA enderea 16384 linhas Uma MA tem ento 16384 (linhas) * 25 (tag) = 409600 bits / 8 = 51200 bytes / 1024 = 50 Kbytes Cache com mapeamento direto Nmero de linhas da cache: Tamanho da linha? Cada linha tem um bit de validade, os bits de Tag e bloco de 8 palavras de 16 bits O problema o tamanho do Tag pois como ele depende do nmero de linhas da cache que o que estou calculando tenho que experimentar ... 1) com 12 bits para linha (podendo enderear 4096 linhas da cache) Diviso de bits do endereo: Tamanho da linha = 1+13 (Tag)+128 = 142 bits / 8 = 17.75 bytes Quantas linhas cabem na cache? Cache tem 256 Kbytes = 256 * 1024 = 262144 bytes / 17.75 = 14768 linhas 2) com 15 bits para linha (podendo enderear 32768 linhas da cache) Diviso de bits do endereo: Tamanho da linha = 1+10 (Tag)+128 = 139 bits / 8 = 17.37 bytes Quantas linhas cabem na cache? Cache tem 256 Kbytes = 256 * 1024 = 262144 bytes / 17.37 = 15091 linhas 1 (Validade) ? (Tag) 128 (Bloco) Contedo da linha Poucos bits!!! Muitos bits!!! 13 (Tag) 12 (Linha) 3 (Palavra) Endereo de 28 bits (256 Mbytes) 10 (Tag) 15 (Linha) 3 (Palavra) Endereo de 28 bits (256 Mbytes) Csar A. F. De Rose e Fernando Gehm Moraes 20 Arquitetura de Computadores II - 01/03/05 3) com 14 bits para linha (podendo enderear 16384 linhas da cache) Diviso de bits do endereo: Tamanho da linha = 1+11 (Tag)+128 = 140 bits / 8 = 17.5 bytes Quantas linhas cabem na cache? Cache tem 256 Kbytes = 256 * 1024 = 262144 bytes / 17.5 = 14979 linhas Cache tem 14979 linhas e Tag = 28 (endereo) 3 (palavra) 14 (linha) = 11 Diviso de bits do endereo: Aproveitamento efetivo: Dados em cada linha: um bloco de 8 palavras de 16 bits = 128 bits Tamanho total da linha: 1 (validade) + 11 (Tag) + 128 (bloco) = 140 bits Percentual de aproveitamento: 140 -> 100% 128 -> ?% (uso para dados) Aproveitamento efetivo = 128 * 100 / 140 = 91.42% Tamanho das memrias associativas: No utiliza MAs nessa tcnica 3.2 Integridade dos dados na cache Problema: ocorreu um miss e o endereo desejado foi buscado no nvel inferior da hierarquia de memria. S que a cache est cheia e no h lugar para escrever este dado. O algoritmo de substituio acionado e uma posio escolhida. S que estes dados foram alterados e no podem ser simplesmente descartados. Este problema ocorre porque uma escrita foi efetuada apenas no nvel da cache e as cpias deste dado nos outros nveis no esto atualizadas Perguntas: Como saber que os dados foram alterados? Como salvar essas alteraes? Em que momento salvar as informaes? Existem duas tcnicas para manter a Integridade dos dados Write-through Write-back 3.2.1 Write-through (escrevo atravs) Tcnica mais antiga Escrevo as alteraes em todos os nveis (escrevo atravs) 11 (Tag) 14 (Linha) 3 (Palavra) Endereo de 28 bits (256 Mbytes) OK!!! 11 (Tag) 14 (Linha) 3 (Palavra) Endereo de 28 bits (256 Mbytes) Csar A. F. De Rose e Fernando Gehm Moraes 21 Arquitetura de Computadores II - 01/03/05 Quando? Sempre que escrevo Quanto? Somente a palavra alterada Vantagens / Desvantagens dessa tcnica Dado sempre atual em todos os Escreve mais vezes nveis Precisa mais do barramento Escreve menos dado 3.2.2 Write-back (escrevo de volta) Tcnica mais recente Escrevo alteraes s quando substituo Quando: substituio Quanto: unidade do nvel (bloco no caso da cache) Como sei quem foi alterado: dirty-bit (bit de sujeira) no bloco Vantagens / Desvantagens dessa tcnica Escreve menos vezes Escreve mais dados de cada vez Precisa menos do barramento Aumento tempo de substituio 3.3 Passos para escrita e leitura na cache Para solucionar o problema da integridade dos dados as tcnicas acima so incorporadas nas operaes de leitura e escrita 3.3.1 Leitura 1. Verifico se foi hit, se no foi vou para 3 2. Procuro por bloco desejado (Tag ou direto), leio e repasso ao processador. Vou para 8 3. Requisito ao nvel mais baixo 4. Recebo bloco, procuro onde colocar e se cache cheia vou para 5. Se acho posio livre escrevo bloco, leio a palavra desejada no bloco, repasso dado ao processador e vou para 8 5. Procuro bloco para substituir (uso poltica) 6. Se Write-back e dirty-bit ligado, salvo bloco a ser substitudo no nvel mais baixo 7. Substituo bloco, leio a palavra desejada no bloco e repasso dado ao processador 8. Pronto Csar A. F. De Rose e Fernando Gehm Moraes 22 Arquitetura de Computadores II - 01/03/05 3.3.2 Escrita 1. Verifico se foi hit, se no foi vou para 3 2. Procuro por bloco desejado (Tag ou direto) e escrevo. Se Write-through escrevo palavra tambm nos nveis mais baixos. Se Write-back ligo dirty-bit. Vou para 8 3. Requisito ao nvel mais baixo 4. Recebo bloco, procuro onde colocar e se cache cheia vou para 5. Se acho posio livre escrevo bloco e efetuo escrita da palavra. Se replicao Write- through escrevo palavra tambm nos nveis mais baixos. Se Write-back ligo dirty-bit. Vou para 8 5. Procuro bloco para substituir (uso poltica) 6. Se replicao Write-back e dirty-bit ligado, salvo substitudo no nvel mais baixo 7. Substituo bloco e escrevo palavra. Se replicao Write-through escrevo palavra tambm nos nveis mais baixos. Se Write-back ligo dirty-bit. 8. Pronto Pergunta: Para que buscar dados do nvel mais baixo quando tenho miss na operao de escrita se vou escrever os dados novamente? Para que buscar para escrever por cima ? Porque s escrevo uma palavra e estou buscando o bloco. 4 GERNCIA DA MEMRIA PRINCIPAL Referncia: Stallings, Captulos 7 e 8 Em um sistema monoprogramado a memria principal dividida em duas partes: uma para o sistema operacional (monitor residente, ncleo) e outra para o programa que est sendo executado Em um sistema multiprogramado a memria de usurio ainda tem que ser dividida entre vrios processos Essa diviso feita pelo sistema operacional de forma dinmica e chamada de Gerencia de Memria Uma gerncia de memria eficiente vital em um sistema multiprogramado. Se somente poucos processos couberem na memria o processador ficar parado grande parte do tempo esperando por operaes de E/S. Sendo assim, uma tcnica de gerncia que consiga colocar mais processos na memria melhora a taxa de utilizao do processador e consequentemente o desempenho da mquina como um todo A memria principal pode ser vista como mais um nvel da hierarquia de memria de forma que o princpio da gerncia o mesmo dos outros nveis: os dados mais usados so trazidos para a memria para diminuir o tempo mdio de acesso ao nvel mais baixo, neste caso o disco Csar A. F. De Rose e Fernando Gehm Moraes 23 Arquitetura de Computadores II - 01/03/05 L2 Memria Principal Maior tamanho Maior velocidade Maior custo por (MB) Memria Secundria (Disco) Teoricamente poderiam ser aplicadas na gerncia de memria principal as mesmas tcnicas que foram vistas para a gerncia de caches, mas no so, por dois motivos: Evoluo Histrica: a idia de uma memria como rea de armazenamento temporrio de dados j existe a muito tempo, muito antes de se pensar em uma hierarquia de memria e em caches Diferentes Caractersticas: a memria principal normalmente muito maior que as memrias caches e os tempos de acesso so muitas vezes maiores. Ao contrrio das caches parte da gerncia pode ser feita em software e as unidades de gerncia possuem a identificao do seu dono (processo), o que pode ser utilizado na estratgia de gerncia Estes dois motivos fizeram com que a gerncia de memria tenha se desenvolvido de forma um pouco diferente do que a gerncia de caches 4.1 Histrico da gerncia de memria Inicialmente a memria era empregada como rea temporria para acelerar o acesso aos dados Como era um recurso caro na poca as o seu tamanho era bastante reduzido (poucos Kbytes) Em conseqncia disto muitas vezes um programa no cabia inteiramente na memria juntamente com o seu ambiente de execuo (interpretador, bibliotecas, etc.) A gerncia de memria foi introduzida em sistemas monoprogramados para permitir que um programa maior que a memria pudesse executar na mquina As primeiras estratgias eram baseadas em overlays (sobreposio) e de responsabilidade total do programador O programador fazia a diviso do seu programa em partes que podiam executar de forma autnoma na memria (overlay) Csar A. F. De Rose e Fernando Gehm Moraes 24 Arquitetura de Computadores II - 01/03/05 No final de cada uma dessas partes era colocado o cdigo responsvel pela carga da prxima parte que poderia ser sobreposta anterior j que os endereos antigos no se faziam mais necessrios O programador tinha controle total da memria da mquina e era responsvel pela troca das partes - O programa tinha que ser escrito de forma que no necessitasse ser quebrado em muitas partes j que essa troca tinha um custo bastante alto Com o advento da multiprogramao surgiram algumas dificuldades A gerncia de overlays tinha que possibilitar agora que vrios programas que somados no coubessem na memria pudessem na mquina executar de forma concorrente Para que a gerncia de overlays de cada programa no interferisse na dos outros programas era necessrio que um agente externo fosse responsvel pela gerncia
A responsabilidade de gerenciar a memria passou ento do usurio para o
monitor residente, mas tarde chamado de sistema operacional 4.2 O problema da fragmentao de memria Um problema diretamente relacionado com a gerncia de memria sua fragmentao Fragmentao resulta em desperdcio de memria Existem dois tipos de fragmentao Fragmentao Interna: ocorre quando usada uma unidade de gerncia de tamanho fixo (Ex: pgina). Requisies dos usurios que no sejam exatamente divisveis por essa unidade tem que ser arredondadas para cima resultando em uma unidade alocada mas no completamente ocupada Fragmentao Externa: ocorre quando usada uma unidade de gerncia de tamanho varivel (Ex: segmento). Uma seqncia de alocaes e liberaes desse tipo podem gerar vrias lacunas de tamanho varivel na memria. Uma requisio de usurio pode ento ser negada apesar de existir memria livre suficiente para atende-la (por causa da fragmentao no foi possvel encontrar uma unidade contgua) 4.3 Endereamento da memria principal Problema: como os endereos utilizados em um programa so usados para acessar posies da memria principal Csar A. F. De Rose e Fernando Gehm Moraes 25 Arquitetura de Computadores II - 01/03/05 4.3.1 Endereamento contguo O programa carregado inteiro em uma nica rea de memria contgua Posso ter duas formas de endereamento no caso da gerncia de reas de memria contguas: direto relativo Endereamento Direto Os endereos de um programa executvel so usados diretamente no acesso memria principal Estes endereos so definidos durante a compilao/lincagem A posio do programa na memria est assim definida e no pode ser alterada Endereo do Programa Memria Principal No caso de multiprogramao este tipo de endereamento pode gerar conflitos no acesso memria j que a posio do programa na memria foi definida sem conhecimento do que estava alocado Memria Principal Programa B Programa A Programas s podem ser carregados na memria se seus espaos de endereamento so disjuntos Uma alternativa a definio dos endereos somente durante a carga do programa O espao de endereamento de um programa inicia sempre em 0 e podendo ser facilmente relocados na carga pelo carregador Csar A. F. De Rose e Fernando Gehm Moraes 26 Arquitetura de Computadores II - 01/03/05 ocupado d: MOV R1, adr : : +d Relocvel Programa Memria Principal Carregador A converso dos endereos pode atrasar consideravelmente a operao de carga O programa no pode ser mudado de lugar durante a sua execuo (compactao, swap) Endereamento Relativo Uma alternativa bem mais flexvel a composio do endereo somente na hora do acesso O programa carregado para a memria com seus endereos relativos (espao de endereamento lgico inicia em 0) O processador possui um registrador de endereamento (registrador de base) que contm a base do espao de endereamento fsico para cada programa Essa base somada ao endereo relativo do programa em cada acesso memria Endereo do Programa Memria Principal Registrador de Base + d b d b O custo da converso pago em cada acesso memria Nesse caso o programa pode ser trocado de lugar na memria em tempo de execuo (compactao, swap) 4.3.2 Endereamento no-contguo A quebra do programa em pedaos que so carregados em reas distintas de memria sem a necessidade de respeitar qualquer ordem resulta em: Um melhor aproveitamento da memria (menor fragmentao externa pelo aproveitamento de lacunas) A gerncia de memria fica mais trabalhosa Csar A. F. De Rose e Fernando Gehm Moraes 27 Arquitetura de Computadores II - 01/03/05 A converso de endereos dita dinmica Os endereos do programa (endereos lgicos) so convertidos na hora do acesso em endereos fsicos (normalmente feito em hardware para acelerar o procedimento, Ex. MMU Memory Manager Unit) Posso ter trs formas de endereamento no caso da gerncia de reas de memria no-contguas: Paginao Segmentao Segmento-paginao Endereamento Paginado Memria fsica quebrada em frames (moldura) com um tamanho fixo de 2k, 4k, ou 8k Espao de endereamento lgico do programa quebrado em pginas que possuem o mesmo tamanho dos frames Quando o processo executado todas as suas pginas so carregadas para frames livres da memria (qualquer pgina em qualquer frame livre) Unidade de gerncia de memria de tamanho fixo (pgina-frame) Frame 0 Frame 1 Frame 2 Frame 3 Frame 4 Frame 5 Frame 6 . . . Pgina 0 Pgina 1 Pgina 2 Pgina 3 Pgina 4 Pgina 5 Pgina 6 EE Lgico do Programa 13 Kbytes Memria Principal Pgina 2 Kbytes Converso de endereos p d Base da tabela de pginas (registrador) Tabela de Pginas (Page Table) + Memria Principal f d p f Endereo Lgico Endereo Fsico Csar A. F. De Rose e Fernando Gehm Moraes 28 Arquitetura de Computadores II - 01/03/05 Nmero de bits usados para d determina o tamanho das pginas (e frames) Nmero de bits usados para p determina o nmero mximo de pginas de um processo Nmero de bits de f determina o nmero total de frames da memria principal e dado pela diviso do tamanho da memria principal pelo tamanho da pgina (Ex: MP 1Mbyte (2 20 ), p 10 bits (2 10 pgina de 1kbyte) resulta em 10 bits para f (2 10 1024 frames na MP) Unidade de gerncia de tamanho fixo no gera fragmentao externa e gera fragmentao interna A tabela de pginas (page table) usada para a converso de pginas em frames (uma tabela para cada processo) Tabela de pginas pode ser armazenada em: Registradores: rpido mas limita tamanho da tabela Memria principal (rea do sistema): lento, pois so necessrios dois acessos mas tabela de pginas pode ter tamanho ilimitado (porm alguns sistemas limitam a tabela pelo tamanho dapgina) TLB (Translation Lookaside Buffer): rea de memria associativa usada como cache para as converses mais efetuadas (ver 4.2.3) Tamanho da pgina Pequena: menor fragmentao interna, tabela de pginas fica maior Grande: maior fragmentao interna, tabela de pginas fica menor Deve ser considerada tambm a operao de transferncia para o nvel mais baixo, o disco, cuja unidade de transferncia o setor com normalmente 512 bytes Tabela de Frames (Frame Table) usada para controle de quais frames se encontram livres ou no esto sendo mais usados (para alocao e substituio de pginas) Uma tabela de frames para todo o sistema Seu tamanho fixo, j que o nmero de frames da memria principal conhecido (tamanho da memria / tamanho da pgina) Procura por first-found (qualquer lacuna serve para qualquer pgina) Possui campos adicionais para controle da poltica de troca de pginas (LRU, LFU) Quando os processos morrem suas pginas na tabela de frames so marcadas como livres possvel o compartilhamento de frames entre vrios processos (leitura) Fcil de implementar com vrias tabelas de pgina apontando para o mesmo frame Controle adicional para verificao de quando frame compartilhado pode ser desalocado Csar A. F. De Rose e Fernando Gehm Moraes 29 Arquitetura de Computadores II - 01/03/05 Vantagens/Desvantagens dessa tcnica Gerncia da memria principal simples: Fragmentao Interna - Substituio 1:1 (pgina e frame tem mesmo tamanho) - Alocao com primeiro frame livre Pginas no do noo de localidade Sem fragmentao externa (rea livre em frames, sempre cabem pginas) Endereamento Segmentado No divido a memria fsica, posso alocar unidade em qualquer posio Unidade de gerncia tamanho varivel denominada segmento Segmento definido pelo usurio ou pelo compilador e resulta em uma maior localidade Endereos de um mesmo segmento esto relacionados Gerncia de memria mais preocupada com a viso do usurio Exemplo de segmentos: dados, cdigo, pilha Quando o processo executado todos os seus segmentos so carregados para a memria (em qualquer posio livre) EE Lgico do Programa Memria Principal Segmento 0 Segmento 2 Segmento 3 Segmento 1 Csar A. F. De Rose e Fernando Gehm Moraes 30 Arquitetura de Computadores II - 01/03/05 Converso de endereos s d Base da tabela de segmentos (registrador) Tabela de Segmentos (Segment Table) + + > Erro !!! sim no Memria Principal Endereo Lgico Endereo Fsico Segmentation Fault tamanho base O deslocamento fornecido pelo usurio precisa ser comparado com o tamanho do segmento para que no possam ocorrer invases de segmentos vizinhos (este teste no era necessrio na paginao pela limitao do nmero de bits) Nmero de bits usados para d determina o tamanho mximo dos segmentos Nmero de bits usados para s determina o nmero mximo de segmentos que um processo pode ter Unidade de gerncia de tamanho varivel no gera fragmentao interna e gera fragmentao externa Procedimento de compactao da memria pode vir a ser necessrio por causa da alta fragmentao externa Segmentos so agrupados novamente eliminando lacunas (migrao de processos alto custo) Tabela de Segmentos (Segment Table) usada para encontrar a base de um segmento na memria e verificar se o deslocamento requisitado pelo usurio se encontra dentro do limite mximo do segmento (seu tamanho) Tabela de segmentos pode ser armazenada em (igual a paginao): Registradores: rpido mas limita tamanho da tabela Memria principal (rea do sistema): lento, pois so necessrios dois acessos mas tabela de segmentos pode ter tamanho ilimitado TLB (Translation Lookaside Buffer): rea de memria associativa usada como cache para as converses de endereo mais efetuadas (ver 4.2.3) Tabela de Alocao (Allocation Table) usada para controle de quais lacunas se encontram livres (para alocao e substituio de pginas) Uma tabela de alocao para todo o sistema Seu tamanho varivel, j que o nmero de reas da memria principal inicialmente 1 (toda a memria) e ao longo da gerncia pode variar de acordo com a incluso de reas ocupadas (uma rea ocupada no meio da memria faria a tabela ficar com 3 entradas) Procura por first-fit, next-fit, best-fit, worst-fit, etc. Csar A. F. De Rose e Fernando Gehm Moraes 31 Arquitetura de Computadores II - 01/03/05 Liberao de segmentos pode resultar na juno de vrios segmentos e na diminuio do nmero de entradas da tabela Possui campos adicionais para controle da poltica de troca de pginas (LRU, LFU) possvel o compartilhamento de segmentos entre vrios processos (leitura) Fcil de implementar com vrias tabelas de segmento apontando para a mesma rea de memria Controle adicional para verificao de quando segmento compartilhado pode ser desalocado Vantagens/Desvantagens dessa tcnica Fragmentao externa Maior localidade na unidade de gerncia (dados dentro do segmento esto relacionados) Gerncia da memria bem mais complexa que na paginao por causa da unidade varivel Gerncia da tabela de alocao Alocao e liberao de pginas Verificao de segmentation fault Sem fragmentao interna (unidade de tamanho varivel) Compactao da memria pode ser necessria (alto custo) Endereamento Segmento-Paginado Combinao entre segmentao e paginao Aproveito a viso lgica de memria mais prxima do usurio da segmentao e a gerncia de memria mais simples da paginao Usurio aloca segmentos e estes so mapeados em um grupo de pginas Memria fsica quebrada em frames (moldura) com um tamanho fixo de 2k, 4k, ou 8k como na paginao, porm existe a informao de que pginas compem cada segmento Unidade de gerncia de memria na realidade de tamanho fixo (pgina-frame) Csar A. F. De Rose e Fernando Gehm Moraes 32 Arquitetura de Computadores II - 01/03/05 Converso de endereos p d Tabela de Pginas (Page Table) + Base da tabela de segmento (registrador) Memria Principal f d p f s Tabela de Segmentos (Segment Table) base + Endereo Lgico Endereo Fsico Seqncia de um acesso 1. Com o numero do segmento descubro na tabela de segmentos a base da tabela de pginas deste segmento (usando o registrador como base) 2. Com o nmero da pgina e a base da tabela de pginas descubro o frame correspondente 3. Com o nmero do frame e o deslocamento dentro dele acesso a memria Unidade de gerncia de tamanho fixo no gera fragmentao externa e gera fragmentao interna como na paginao Tabela de Segmentos (Segment Table) usada para a obteno da base da tabela de pginas do segmento desejado uma para cada processo A tabela de pginas (page table) usada para a converso das pginas de cada segmento em frames (uma tabela para cada segmento de cada processo) Tabela de Frames (Frame Table) usada para controle de quais frames se encontram livres ou no esto sendo mais usados (para alocao e substituio de pginas) como na paginao Uma tabela de frames para todo o sistema Seu tamanho fixo, j que o nmero de frames da memria principal conhecido (tamanho da memria / tamanho da pgina) Procura por first-found (qualquer lacuna serve para qualquer pgina) Possui campos adicionais para controle da poltica de troca de pginas (LRU, LFU) Quando os processos morrem suas pginas na tabela de frames so marcadas como livres Csar A. F. De Rose e Fernando Gehm Moraes 33 Arquitetura de Computadores II - 01/03/05 Vantagens/Desvantagens dessa tcnica Gerncia da memria principal simples: - Substituio 1:1 (pgina e frame tem mesmo tamanho) - Alocao com primeiro frame livre Trs acessos so necessrios para cada operao com a memria Segmento d noo de localidade um grupo de pginas Preciso mais memria para tabelas Sem fragmentao externa (rea livre em frames, sempre cabem pginas) Fragmentao Interna 4.3.3 Otimizao do endereamento no-contguo (TLB) Problema: tabelas de pginas e de segmento acabam ficando to grandes que precisam ser armazenadas na memria Dessa forma para cada acesso memria se faz necessrio no mnimo um outro acesso (na segmento paginada at dois acessos) para a obteno das tabelas reduzindo consideravelmente a velocidade de acesso memria Para acelerar a converso usada uma rea de memria associativa adicional chamada TLB Translation Lookaside Buffer A TLB funciona como uma cache guardando as converses mais usadas Como uma memria associativa, a procura feita em paralelo em todas as suas posies Caractersticas Tamanho da linha 4-8 bytes (pode conter segmento, pgina e frame) Nmero de linhas 24-1024 Ex: TLB de um Pentium III possui 32 linhas Hit-time 1 ciclo, Miss-Penalty 10-30 ciclos Hit-ratio aproximadamente 99% Como pode ser to alto? Devido a localidade dos acessos!!! Exemplo de utilizao (segmento paginao) Csar A. F. De Rose e Fernando Gehm Moraes 34 Arquitetura de Computadores II - 01/03/05 Segmento Deslocamento Base da tabela (registrador) + MP + Pgina Tabela de Segmentos Tabela de Pginas Frame Segmento Pgina TLB (Memria Associativa) f d A TLB consultada antes do acesso as tabelas e se ocorrer um hit retorna o frame desejado Ocorrendo um miss a consulta as tabelas feita normalmente e o frame obtido colocado na TLB no lugar da converso menos recentemente utilizada (LRU) 4.4 Memria Virtual Na gerncia de memria convencional as unidades (pginas ou segmentos) de um programa eram todas carregadas para memria principal antes de sua execuo Como vimos anteriormente, devido as regras da localidade, um programa s precisa de algumas dessas unidades em um determinado momento Dessa forma possvel gerenciar a memria de forma que s as unidades que so necessrias em um determinado momento se encontrem na memria principal A memria fsica pode ser melhor aproveitada dessa forma sendo possvel: A execuo de um programa maior que a memria A execuo de vrios programas ao mesmo tempo que somados so maiores que a memria O processador gera endereos para um espao de endereamento lgico bem maior do que o tamanho da memria fsica (da o nome virtual j que essa quantidade de memria no existe fisicamente na memria principal) e o SO aplica as seguintes regras: Quando um processo inicia suas unidades no so todas carregadas para memria Nas tabelas de converso de endereos indicado que as unidades no esto na memria (Ex: bit de validade) Quando uma converso de endereo se faz necessria, o sistema gera um page- fault e manda buscar a pgina do disco (so carregadas por demanda). O processo perde o processador Csar A. F. De Rose e Fernando Gehm Moraes 35 Arquitetura de Computadores II - 01/03/05 O processo s vai para a fila de pronto quando a unidade estiver disponvel na memria Se a memria ficar cheia, novas unidades so colocadas no lugar das menos recentemente usadas (LRU) Atualmente so comuns EE (espao de endereamento) lgicos de 4 Gigabytes (2 32 ) por causa dos registradores de endereamento de 32 bits. Os novos processadores de 64 bits possibilitaro EE lgicos maiores Essa tcnica tem os seguintes custos associados: Miss-penalty alto pois a unidade tem que ser buscada do disco Aumenta o nmero de trocas de contexto por causa de page-faults e de eventos a serem tratados (evento gerado quando a unidade foi trazida) o que gera um custo para o SO Um problema srio que pode ocorrer na gerncia de memria virtual Trashing Trashing vem da palavra trash que significa lixo e indica que nada de produtivo est sendo feito Trashing ocorre quando o sistema fica a maior parte do tempo trocando pginas e o processador no consegue executar nenhum processo Isso resulta do fato de muitos processos estarem ativos e a memria fsica ser muito pequena para acomodar suas unidades Sendo assim, quando um processo ganha a CPU ele manda trazer suas unidades e volta a dormir, quando essas unidades so trazidas elas apagam as unidades de um outro processo por causa da pouca memria. Quando for a vez desse outro, suas pginas j no esto mais na memria, e assim por diante ... Thrashing Taxa de utilizao do processador Nmero de processos ativos O grfico acima mostra que existe um nmero de processos ideal para que a multiprogramao obtenha a maior taxa de utilizao do processador Acima deste nmero o desempenho da mquina comea a diminuir. Este nmero bastante dinmico e depende: Da arquitetura da mquina Do tamanho da memria principal Do nmero de processos ativos Do tipo de processos que esto ativos (io-bound, cpu-bound) Csar A. F. De Rose e Fernando Gehm Moraes 36 Arquitetura de Computadores II - 01/03/05 Este efeito pode ser observado em PCs quando muitos processos esto ativos. A luz do disco pisca intensamente e pouca coisa acontece. A soluo comprar mais memria ou executar menos programas ao mesmo tempo (ou tornar a gerncia de memria mais eficiente) 4.5 Estudo de Casos A maioria dos sistemas operacionais modernos aplica a tcnica de memria virtual na gerncia de memria No caso de sistemas que executam em mltiplas plataformas a gerncia de memria pode variar de caso para caso, dependendo do hardware disponvel (MMU Memory Manager Unity) 4.5.1 UNIX e SOLARIS Verses antigas do UNIX aplicavam um particionamento varivel da memria sem memria virtual Verses mais modernas (SVR4 e Solaris2.x) implementam memria virtual paginada para os processos de usurio A substituio de pginas feita com uma variao do algoritmo do relgio Para as necessidades do kernel (pequenos blocos) utilizado uma variao do algoritmo de buddy 4.5.2 Linux Tem vrias caractersticas em comum com gerncia de outras implementaes de UNIX mas tem suas peculiaridades Implementa memria virtual paginada com uma tabela de pgina de trs nveis (diretrio, diretrio intermedirio, pgina) Diretrio de pginas Deslocamento MP Pgina Diretrio Tabela de Pginas Frame f d + Base da tabela de pginas + Base da tabela de diretrios (registrador) 10 5 12 Endereo Lgico 32 bits Diretrio intermedirio de pginas Diretrio Base da tabela de diretrios intermedirios + 5 Conceito de diretrio reduz o tamanho das tabelas aumentando a complexidade do acesso (vrias consultas para converter o endereo) A figura acima mostra apenas as tabelas usadas em uma converso mas a estrutura das tabelas no linear e sim uma rvore (Vrias tabelas de diretrios intermedirios para cada entrada da tabela de diretrios e vrias tabelas de pginas para cada entrada de cada tabela de diretrios intermedirios!!!) Csar A. F. De Rose e Fernando Gehm Moraes 37 Arquitetura de Computadores II - 01/03/05 Pginas de 4K na famla X86 e 8k na famla Alpha Para facilitar a portabilidade tem um nvel intermedirio de gerncia de memria Architecture Independent Memory Model A substituio de pginas feita com uma variao do algoritmo do relgio Alocao dinmica feita na pilha do sistema (stack) Para as necessidades do kernel (pequenos blocos) utilizado uma variao do algoritmo de buddy. O linux implementa o Buddy sobre pginas mas subdivide-as em menores unidades para melhor atender as necessidades do kernel 4.5.2 IBM OS/2 (hardware Intel) Diretrio Deslocamento Base da tabela Segmentos (registrador) + MP + Pgina Diretrio Tabela de Pginas Frame f d + Base da tabela de pginas Tabela de Descritores Descritor de segmentos + Base da tabela de diretrios (registrador) 10 10 12 32 Seletor Deslocamento 32 14 2 Proteo Endereo Lgico 48 bits 4.5.3 Windows 2000 Utiliza uma variao da memria virtual paginada Divide o seu espao de memria virtual de 4 Gigabytes (registrador de 32 bits) em 2 Giga para os processos de usurio e 2 Giga para o sistema operacional Quando um processo de usurio disparado ele recebe um nmero de frames de memria (Working Set - WS) Substituies de pginas so efetuadas apenas dentro deste WS, ou seja, s pginas do mesmo processo so candidatas para a substituio Se o nmero de substituies de um processo for grande e bastante memria estiver disponvel, o WS pode ser aumentado Se a memria livre ficar escassa, o sistema operacional diminui o WS dos processos de usurio retirando as suas pginas menos recentemente utilizadas Csar A. F. De Rose e Fernando Gehm Moraes 38 Arquitetura de Computadores II - 01/03/05 5 EXERCCIOS 1. O que vem a ser uma hierarquia de memria? Qual problema tento resolver com essa soluo? 2. Se o tempo para ler um dado da memria principal aumenta com os vrios nveis de uma hierarquia de memria, como o tempo mdio de acesso pode ficar melhor? 3. Qual o princpio que faz com que uma hierarquia de memria funcione e quais os seus dois tipos (cite exemplos prticos)? 4. O que vem a ser miss-penalty? Por que ele tem que ser necessariamente expresso por um tempo mdio? 5. Quais os dois principais problemas que os mapeamentos para memria cache tem que resolver? 6. Compare o mapeamento de cache direto com o associativo em relao poltica de substituio, uso de rea da cache com dados de controle, e a possibilidade de se ter mau aproveitamento da cache. 7. Explique como funciona o mapeamento de cache conjunto associativo e responda quais so as suas duas principais vantagens. 8. Para uma cache com 8 posies desenhe como fica a diviso de conjuntos no caso de associatividade 1 way, 2 way, 4 way e 8 way. 9. Desenhe a diviso de bits do endereo lgico, calcule o aproveitamento efetivo e o tamanho das memrias associativas em Kbytes (se for o caso) para as tcnicas de mapeamento de memrias cache direta, totalmente associativa e conjunto associativa com 4 conjuntos (4 Gbytes de memria, cache com 1024 linhas, bloco de 8 palavras de 32 bits) 10. A rea de memria disponvel para implementao de uma cache L2 256 Kbytes. Considerando que a memria a ser endereada possui 256 Mbytes (2 28 ) e a cache deve trabalhar com blocos de 8 palavras de 16 bits calcule para a tcnica direta e conjunto associativa (16 conjuntos): Diviso de bits do endereo e nmero de linhas da cach. 11. O que vem a ser o problema de integridade de dados na cache? Descreva de forma sucinta as duas possveis estratgias para sua soluo. 12. Por que preciso trazer um dado da memria principal para a cache no caso de uma escrita? Este dado no vai ser de qualquer forma apagado pelo dado a ser escrito? 13. Compare a tcnica de gerncia de memria paginada com a gerncia segmentada em relao a fragmentao gerada, alocao de unidades e substituio de unidades ? 14. Desenhe como fica a converso de endereos na gerncia de memria segmento- paginada e descreva os passos de uma converso. 15. Faa uma tabela com o nmero de tabelas de pginas, tabelas de segmentos, tabelas de frames e tabelas de gerncia de memria para as trs tcnicas de gerncia de memria vistas em aula. 16. O que vem a ser trashing e qual a sua principal causa?