Cássio Barroso Bernardes
1 6.7 Operações com as Memórias: Já sabemos, conforme anteriormente citado, que é possível realizar duas operações em uma memória: Escrita (write) armazenar informações na memória; Leitura (read) recuperar uma informação armazenada na memória. A operação de leitura não destrói o conteúdo da memória, ela apenas providencia a transferência de uma cópia do que está armazenado, enquanto a informação desejada continua armazenada. Somente a operação de escrita é destrutiva. 6.8 Memória Virtual: Antes de poder explicar o que é a memória virtual, é importante ao menos voltarmos a falar um pouco a respeito da memória principal (MP) = RAM. A memória RAM é o local que o processador utiliza para armazenar tudo que estiver aberto em seu computador, como arquivos, jogos e todo tipo de programas. Assim, conforme vamos abrindo mais aplicativos, a RAM vai sendo consumida. A memória principal (RAM) disponível em um computador é em geral bem menor do que o tamanho máximo de memória permitido pelo processador (por exemplo, em uma arquitetura de 32 bits podemos endereçar até 4 GB de memória principal). O problema é que temos um espaço limitado de memória RAM e, cada vez mais, os aplicativos consomem partes maiores dela. E o que o processador faz quando a memória RAM acaba? Muito simples: utiliza a Memória Virtual. O mecanismo de memória virtual foi criado para permitir a execução de programas que necessitem de mais memória principal (RAM) do que a quantidade instalada no sistema. A memória virtual é uma espécie de arquivo que é criado no computador e o processador utiliza para armazenar dados que ele costuma deixar na memória RAM. É como se ele simulasse a memória RAM dentro do seu HD, por isso que se chama memória virtual. E por que será que a memória RAM é mais cara? Não seria mais fácil simplesmente utilizar o HD para armazenar os dados? Não exatamente, porque a
2 memória virtual é extremamente mais devagar do que a memória RAM. Dessa forma, se o seu computador estiver com pouca memória RAM e precisar usar a memória virtual para armazenar dados dos programas, com certeza o desempenho vai despencar. Existe uma separação da memória lógica do usuário, da memória física: somente uma parte do programa precisa estar na memória para execução; o espaço de endereçamento lógico pode ser muito maior que espaço de endereçamento físico; permite o compartilhamento de espaços de endereços por vários processos. Em um sistema de memória virtual, o endereço de memória gerado pelo programa é um endereço virtual, sendo diferente do endereço real usado para o acesso à memória principal. Os possíveis endereços virtuais que podem ser gerados pelo programa formam o espaço de endereçamento virtual, enquanto a faixa de endereços na memória principal constitui o espaço de endereçamento real. Embora sob o ponto de vista do programa as instruções e dados estejam armazenados no espaço de endereçamento virtual, na realidade eles continuam armazenados na memória principal, representada pelo espaço de endereçamento real. Esta diferença entre endereçamento virtual e real utiliza um mecanismo que faz a correspondência entre o endereço virtual gerado pelo programa e o endereço real que será usado para acessar a memória principal, o gerenciador de memória virtual, ou DAT (Dynamic Address Translator)
3 Como a memória virtual pode ser muito maior do que a memória principal presente, pode acontecer que o bloco de dados referenciado pelo programa não esteja presente na memória principal no momento que é referenciado. Os blocos de dados e instruções de um programa em execução ficam armazenados na memória secundária, que é uma unidade de disco do sistema. Na ausência do bloco referenciado pelo programa no momento que o DAT realiza o mapeamento, este é carregado da memória secundária para a memória principal Memória Virtual - Segmentação e Paginação: Blocos de memória podem ser organizados de duas formas: em segmentos ou páginas. O segmento pode ser formado por um bloco de informações logicamente relacionadas; os segmentos podem ter tamanho variável. Uma página é um bloco de dados de tamanho fixo e não segue nenhuma coesão lógica, isto é, os dados podem não ter relação entre si. O DAT possui uma pequena memória interna chamada TLB (Translation Lookaside Buffer), que armazena os pares de endereços virtual/principal acessados recentemente, como uma memória cache. No acesso a uma posição de memória virtual, se o dado requerido não possui um registro relacionando com a memória principal, o bloco de dados também não se encontra na memória principal. Essa ausência de bloco é denominada falha de página ou falha de segmento Controle de Memória Virtual: Ao ocorrer uma falha o DAT gera uma interrupção, transferindo o controle do processador para o sistema operacional, para que este transfira o bloco de dados referenciado da memória secundária para a memória principal. Após a transferência do bloco de dados ser concluída, o controle do processador retorna ao programa em execução, exatamente para o ponto onde foi interrompido, agora com os dados referenciados presentes na memória principal
4 Com a utilização da memória virtual, não é necessário que todas as instruções e dados de um programa permaneçam na memória principal durante a execução do programa, blocos são transferidos da memória secundária para a principal à medida que forem referenciados. É importante ressaltarmos que todo o mecanismo de memória virtual funciona de forma totalmente transparente para o programa, e mais importante, para o programador que o desenvolveu. 6.9 Memória Cache: A memória cache é uma pequena porção de memória inserida entre o processador e a memória principal, cuja função é acelerar a velocidade de transferência das informações entre a CPU e a memória principal e, com isso, aumentar o desempenho dos sistemas de computação. Para tanto, este tipo de memória é fabricado com tecnologia semelhante à da CPU e, em conseqüência, possui tempos de acesso compatíveis com a mesma, resultando numa considerável redução da espera da CPU para receber dados e instruções da cache, ao contrário do que acontecem em sistemas sem cache. Devido ao custo, a capacidade de armazenamento costuma ser da ordem de Kbytes. Nos sistemas mais modernos já encontramos caches com 1 Mbyte ou mais. As memórias cache podem ser inseridas em dois ou mais níveis. O primeiro nível é o L1 (Level 1 Nível 1), uma memória cache inserida internamente no processador, isto é, é encapsulada na mesma pastilha. Nas placas-mãe mais antigas a cache L2 vinha soldada na própria placa, sendo que os processadores mais novos já possuem esta memória em seu próprio interior, a exemplo da L1. Quando processadores que possuem cache L1 e L2 em seu próprio interior são instalados em
5 uma placa mãe que possua memória cache, esta passa a ser utilizada como cache de nível 3, ou L3. Já existem processadores que possuem esta memória (L3) também em seu próprio interior. Como exemplo podemos citar o processador Core i7 da Intel, que possue 8MB de cache L3. Neste caso, se existir memória cache presente na placa mãe, esta será considerada como L4. A CPU procura por dados primeiro em L1, depois em L2 (e/ou L3 e L4) e finalmente requisita os dados da memória principal Organização para transferência de Informações entre CPU/Cache/MP: Sempre que a CPU vai buscar uma nova informação (instrução ou dado), ela acessa a memória cache. Se a informação estiver na cache, chama-se de acerto (ou hit), ela é transferida em alta velocidade, compatível com a da CPU. Se a informação não estiver na cache, chama-se de falta (ou fault), então o sistema está programado para interromper a execução do programa e transferir a informação desejada da MP para a cache. Só que essa transferência não é somente da instrução desejada, mas dela e de um grupo subsequente, na pressuposição de que as instruções do grupo serão requeridas pela CPU em seguida e, portanto, já estarão na cache quando necessário (acertos). Para haver realmente algum aumento de desempenho de um sistema de computação, com a inclusão da memória cache, é necessário que haja mais hits do que faults
6 6.11 Memória Secundária (ou Auxiliar): Na base da pirâmide que representa a hierarquia de memória em um sistema de computação encontra-se um tipo de memória com maior capacidade de armazenamento do que os outros tipos já descritos, menor custo por byte armazenado e com tempos de acesso também superiores aos outros tipos. Esta memória denominada memória secundária ou memória auxiliar tem por objetivo garantir um armazenamento mais permanente aos dados e programas do usuário, razão por que deve naturalmente possuir maior capacidade que a memória principal. Este tipo de memória pode ser constituído por diferentes tipos de dispositivos, alguns diretamente ligados ao sistema para acesso imediato (discos rígidos, por exemplo) e outros que podem ser conectados quando desejado (como pen drive, CD, DVD, etc), cuja informação armazenada se torna disponível para o usuário quando o específico pen drive ou CD estiver inserido no elemento de leitura (porta USB ou drive de CD-ROM, respectivamente). Dispositivos de memória secundária são necessários a qualquer sistema de computação, pois nenhum computador fica ininterruptamente ligado, ou seja, os dados e instruções não podem ficar armazenados indefinidamente na memória principal. Vejamos abaixo algumas características deste tipo de memória: Tempo de acesso: os dispositivos que representam este tipo de memória são eletromecânicos e não circuitos puramente eletrônicos (como é o caso dos registradores, memória cache e memória principal), por isso este tipo de memória possui os maiores tempos de acesso dentre todos os tipos de memória. Capacidade de armazenamento: uma das principais características da memória secundária é sua grande capacidade de armazenamento, a qual também varia consideravelmente dependendo do tipo de dispositivo utilizado. Volatilidade: uma das principais características dos dispositivos que constituem a memória secundária é sua não volatilidade: as informações não se perdem quando não há alimentação elétrica. Trata
7 se, pois, de dispositivos úteis para guardar os programas e dados de forma permanente Geometria dos Discos Rígidos (HD): O disco rígido ou HD (Hard Disk) é um dispositivo de armazenamento de grande volume de dados (Memória Secundária), não volátil. No HD são armazenados os programas instalados no computador (Sistema Operacional: Windows, Linux, Mac OS / Aplicativos: Word, Excel, Outlook, Nero, IE, Firefox, Photoshop, etc) e os arquivos gerados pelos mesmos (Fotos, Textos, Músicas, Planilhas, Apresentações, etc). Um disco consiste de pratos, cada qual com duas superfícies. Cada superfície consiste de anéis concêntricos denominados trilhas. Cada trilha consiste de setores separados por espaços. O número de trilhas em um disco e a capacidade que cada trilha pode armazenar depende do tipo de disco. Numeradas da borda para o centro, isto é, a trilha que fica mais próxima da extremidade do disco é denominada trilha 0, a trilha que vem em seguida é chamada trilha 1, e assim por diante, até chegar à trilha mais próxima do centro. Os HDs com grande capacidade contam com mais de um prato, sobrepostos um sobre o outro
8 Trilhas de mesmo número em faces diferentes formam um cilindro. Exemplo: Todas as trilhas de número Zero de todos os discos formam o cilindro Zero. Os cilindros são numerados a partir de zero, na borda mais externa dos discos. As faces também são numeradas, começando de zero na superfície mais alta Capacidade do Disco: Capacidade: é número máximo de bits que podem ser armazenados expresso em terabytes (1 TB). Fatores que determinam a capacidade: Densidade de gravação: número de bits que podem ser gravados em 1 polegada de uma trilha. Densidade de trilha: número de trilhas que podem existir em um segmento radial. Densidade de armazenamento: produto da densidade de gravação com densidade de trilha. Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco)
9 Exemplo 01: 512 bytes/setor 300 setores/trilha (em média) trilhas/superfície 2 superfícies/prato 5 pratos/disco Capacidade = 512 x 300 x x 2 x 5 = ,72 GB Exemplo 02: 512 bytes/setor 500 setores/trilha (em média) trilhas/superfície 2 superfícies/prato 5 pratos/disco Qual será a capacidade deste disco?