Baixe o app para aproveitar ainda mais
Prévia do material em texto
O que é memória? Memória é o componente dentro da arquitetura e organização do computador com a função de armazenar os programas e os dados que serão manipulados pelo sistema operacional dentro dos ciclos de instrução. A memória não pode ser considerada um componente único, mas sim um subsistema. Para ficar mais clara a diferença de velocidade de processamento, vamos falar dos números. Dentro da CPU, um dado é processado em aproximadamente 5 nanossegundos (isto significa 5 bilionésimos de segundo), ao contrário do processamento da memória principal .Como sabemos que tudo que está sendo processado fica armazenado na memória RAM e é requisitado pela CPU, quando a CPU recebe este conteúdo e processa em 5ns, a CPU fica mais 55ns ociosa aguardando o envio de uma nova informação por parte da memória principal. Por esse e por outros motivos, surgiram outras memórias que auxiliam nesta compensação. Memória primária x secundária 1. Para se entender a diferença dessas divisões, é importante conhecer o conceito de volatilidade. 2. Uma memória é volátil quando ela perde o conteúdo, quando não há alimentação de energia. Resumindo, se o equipamento é desligado, seu conteúdo é perdido. Sendo assim, analise as definições: ● memória primária : São os componentes que fornecem dados e instruções para uso imediato, sendo voláteis.Basicamente, é formada pelos seguintes componentes: Registradores, Memória cache e Memória principal. ● Memória secundária: São os componentes que provêm capacidade de armazenamento permanente (não voláteis).Exemplos de dispositivos de armazenamento secundário são:Discos Rígidos, Discos Óticos (CDs, DVDs, etc.) e Fitas. ● os tipos de memória em ordem decrescente de velocidade de acesso (da maior velocidade para a menor velocidade): Registradores, Memória Cache, Memória Principal e Memórias Secundárias. Registradores (baixa capacidade de armazenamento) Quando estudamos o ciclo de instrução, ou ciclo de busca–decodificação e execução, verificamos a presença de registradores, que são dispositivos de armazenamento temporário, localizados na CPU, utilizados constantemente dentro do processo de execução das instruções. Por serem usados pela CPU, entende-se que são memórias muito rápidas. Na verdade, são consideradas as memórias mais rápidas existentes no sistema de computação. Porém, como seu objetivo é o armazenamento do conteúdo de memória a ser processado pela CPU, sua capacidade de armazenamento se limita à palavra daquele processador, normalmente variando de 8 a 64 Bits. Memória cache é uma memória criada justamente para diminuir os “estados de espera” entre CPU e memória principal, sendo muito mais rápida do que a memória RAM e com mais capacidade do que os registradores. Como já estudado, a CPU trabalha diretamente com a memória RAM. Sendo assim, todos os dados processados são recebidos dos módulos de memória RAM, para, dessa forma, serem decodificados e executados.Porém, com o desenvolvimento constante na tecnologia de construção de processadores, (lembre-se inclusive da Lei de Moore) a sua velocidade foi ficando cada vez maior quando comparada à velocidade de transmissão da memória principal (que não acompanhou da mesma forma a evolução em velocidade, mas sim em capacidade de armazenamento). Com isso, surgiu um desequilíbrio entre a comunicação da CPU e a memória principal, de forma que a CPU processa dados mais rápido do que a memória RAM poderia enviar, resultando em longos períodos de ociosidade ou estados de espera (“wait states”) devido ao gargalo (“bottleneck”) criado por este desequilíbrio, o que logicamente resulta em um desperdício da capacidade de processamento da CPU. Por esse fato e também porque os registradores possuem alta velocidade mas baixa capacidade de armazenamento, foi necessário, dentro da hierarquia da memória, criar uma nova “camada” que possibilitasse a CPU usar melhor toda a sua capacidade de processamento: a cache.memória Ela tem a função de armazenar temporariamente conteúdos muito requisitados e fornecer as informações para a CPU de forma mais ágil, vitando que a memória principal tenha que ser consultada a todo momento, reduzindo a ociosidade da CPU. Certamente, o custo da memória cache é maior do que o da principal e menor do que o custo de registradores, o que justifica parte da solução encontrada. No entanto, o custo de fabricação da memória cache é muito maior do que o da principal, não justificando a extinção da principal. Ou seja, não seria viável economicamente construir um computador somente com tecnologia de memória cache. A partir dos processadores 386, surgiu a inclusão de memória cache, localizada entre a CPU e a principal, e que funcionaria como um espelho de parte do conteúdo dessa memória principal. Exemplo das primeiras placas-mãe lançadas com memória cache, localizada na própria placa-mãe. Princípio da localidade O funcionamento da memória cache se faz da seguinte forma: todo conteúdo consultado com mais frequência na memória principal é mantido de forma espelhada na memória cache , ou seja, este conteúdo não é apagado na memória principal, somente espelhado. Esse conteúdo consultado com frequência é verificado pelo princípio da localidade. Por esse princípio, se um endereço, por exemplo, na memória principal, foi requisitado pela CPU, é bem provável que um endereço próximo ou vizinho a este seja o próximo a ser consultado pela CPU na memória principal. Dessa forma, antecipa-se não somente o conteúdo solicitado pela CPU, mas também o conteúdo dos endereços próximos a esta localidade são espelhados da memória principal para a cache, de modo que, em uma próxima vez que for efetuada uma consulta por parte da CPU, este conteúdo possa ser acessado diretamente pela cache, otimizando o tempo de processamento. ● Tipos de princípio da localidade 1)PRINCÍPIO DA LOCALIDADE TEMPORAL Baseia-se no fato de que um dado acessado recentemente tem mais chances de ser usado novamente do que um dado usado há mais tempo. Isso é uma realidade pois, quando um programa está em execução, uma variável pode ser consultada diversas vezes durante seu processamento, por exemplo, se houver uma rotina de loop ou sub-rotinas. Sendo assim, o princípio da localidade temporal tende a manter os dados e instruções recentemente acessados. 2) PRINCÍPIO DA LOCALIDADE ESPACIAL Baseia-se no fato de que há uma grande probabilidade de acesso para dados e instruções em endereços próximos àqueles acessados recentemente pela CPU (como no exemplo citado anteriormente). Durante a execução de um programa, normalmente as variáveis são criadas e armazenadas próximas umas às outras, dentro da memória principal. O conteúdo estará disponível na memória cache de imediato? Logicamente, nem sempre, em uma consulta efetuada pela CPU, o conteúdo estará disponível na memória cache de imediato. Sendo assim, existem duas possibilidades: • Se a CPU busca um determinado dado e o encontra na cache, dá-se o que chamamos de cache hit, ou seja, conteúdo é localizado na cache; • Se o caso for negativo, ou seja, se o dado não estiver presente na cache, sendo necessário requisitar o conteúdo para a memória principal, dá-se o que chamamos de cache miss. Mapeamento de cache Mesmo com a memória cache, a localização das instruções ou dados a serem manipulados pela CPU continuam se relacionando a endereços da memória principal e não da memória cache.Se a CPU busca um determinado conteúdo, continua sendo referenciado o endereço da MP. Sabendo que a memória cache possui uma pequena porção de memória e que normalmente o índice de cache hit é de 90%, como esta memória é referenciada na cache, de forma a evitar que toda a memória cache tenha que ser varrida a fim de localizar um determinado endereço? O que seria ineficiente? A base disso é o processo de mapeamento da memória,ou seja, é feita uma divisão da memória principal em blocos de tamanho fixo, conhecidas como linhas de cache. Essas linhas possuem de 4 bytes (32 bits) a 64 bytes (512 bits) e são endereçadas a partir do zero, de forma que, se a memória principal for dividida em 64 bytes, teríamos as linhas que iriam de 0 a 63 bytes, de 64 a 127 bytes, e assim por diante.Feito isso, já se tem uma forma de mapeamento que pode ser feito na cache. Veja algumas formas desse mapeamento da cache: Caches totalmente associativas Neste método todas as linhas de cache da memória principal podem ser gravadas em qualquer localização na memória cache. É uma forma ineficiente porque a recuperação dos dados pode levar à varredura completa da cache para localizar o conteúdo. Caches de mapeamento direto O método de mapeamento direto limita a gravação das linhas de cache em locais específicos na cache. Porém, este índice pré-definido dos locais permite que a pesquisa do conteúdo na cache seja mais ágil. A figura abaixo mostra um esquema de mapeamento direto em que a linha de cache consiste em 32 bytes (256 bits). Caches associativas de conjunto Este tipo de mapeamento é um esquema híbrido entre o mapeamento totalmente associativo e o mapeamento direto. Ele permite que os problemas do mapeamento totalmente associativo (em que a cache inteira precisa ser varrida à procura de um endereço) e do mapeamento direto (em que ocorrem colisões) sejam minimizados. Nele, um mesmo endereço na memória principal pode ser armazenado em mais de um local (por vez) da cache, através da criação de vias de cache, ou seja, cada linha pode possuir n vias de cache, onde normalmente são de 2 a 4 vias. Métodos de substituição de dados No que se refere à memória cache, é importante lembrar que existe um momento em que sua capacidade está lotada e os dados precisam ser substituídos, como, por exemplo, os das vias de cache. Como optar por qual via de cache a ser excluída para uma nova substituição? Existem três métodos conhecidos de substituição de dados na cache: Substituição Aleatória : É escolhida uma posição qualquer da cache aleatoriamente para ser substituída. First-in First-out : Remove a linha que está mais tempo na cache. Least Recently Used (LRU): Remove a via menos recentemente utilizada e a linha que a mais tempo não é referenciada pelo CPU. Quando há um cache hit, um contador é zerado para esta via, enquanto todos os demais tem seu contador incrementado. Quando for necessário substituir uma linha na cache, será retirada aquela cujo contador tiver o valor mais alto. Utilizado para substituição de dados no mapeamento de cache associativa de conjunto. Políticas de escrita em cache na memória principal Logicamente, é necessário que, em algum momento, os dados atualizados na memória cache também sejam atualizados na memória principal. Afinal, uma deve ser o espelho da outra.Sendo assim, existem políticas que efetuam esta atualização: -> Write Through- Consiste em atualizar o valor em cache e na MP simultaneamente. -> Write Back - Consiste em atualizar a cache, porém ao enviar atualizações em blocos para a memória principal. Memória Principal A Memória Principal é a memória básica de um sistema de computação desde seus primórdios. É o dispositivo onde o programa (e dados) que vai ser executado é armazenado para que a CPU vá “buscando” instrução por instrução. Normalmente é chamada de RAM (Random Access Memory, em português Memória de Acesso Aleatório).Sua tecnologia de construção se difere das memórias cache. Para se ter uma ideia, cada bit na memória cache precisa de 6 transistores, ao passo que 1 bit de MP necessita apenas de 1 capacitor e 1 transistor. Isso permite uma densidade mais elevada da MP e, portanto, uma capacidade maior a um custo menor. Porém, o acesso é bem mais lento do que o das memórias cache, como já é sabido. ● Estrutura Processador/Memória Principal Somente duas operações são permitidas na comunicação CPU/Memória Principal. São elas: Leitura (sinal READ): Para recuperar um conteúdo armazenado. Esta ação não elimina o conteúdo da memória. Escrita (sinal WRITE): Para armazenar informações na memória. Esta ação elimina o conteúdo da memória, gravando uma informação por cima. Dentro do processo de gravação, são utilizados: * Barramentos de Controle; * Endereços e Dados; * Unidade de Controle (UC); * Registradores de Endereço de Memória (REM); * Registrador de Dados de Memória (RDM). Processo de leitura 1 A CPU armazena no REM o endereço da posição, onde a informação a ser lida está localizada; 2 A CPU comanda uma leitura (sinal de controle para memória - READ), pelo barramento de controle; 3 O conteúdo (Palavra) da posição identificada pelo endereço armazenado no REM, então, é transferido para o RDM e a partir dele enviado para a UCP, pelo barramento de dados. Processo de escrita 1 A CPU envia, para o REM, o endereço da memória onde a palavra será gravada e, para o RDM, a informação (Palavra) da posição a ser gravada; 2 A CPU comanda uma gravação (sinal write) pelo barramento de controle; 3 A palavra armazenada no RDM é, nesse momento, transferida para a posição de memória, cujo endereço está no REM. Células e Endereços A Memória Principal é organizada como um conjunto de células que ficam sequencialmente dispostas, de modo que a CPU possa recuperar e armazenar informações sempre que necessário, através de endereços que permitem a localização das mesmas. Quando se diz célula, queremos dizer a unidade de armazenamento do computador na Memória Principal, sendo a menor unidade da memória que pode ser endereçada, pois não é possível buscar uma parte da célula, e sim a célula no seu todo, que possui um tamanho fixo, de acordo com a máquina e sua construção.Porém, na atualidade, se baseia em células de 8 bits, ou seja, 1 byte, que são identificadas por um Endereço único, onde a CPU se referencia ao tentar acessar, seja para consulta ou para gravação pelo Sistema Operacional. As células são numeradas sequencialmente, de 0 a m-1. Endereço é o localizador da célula, que permite identificar univocamente uma célula Em geral, para se representar o endereço, é utilizado o tamanho máximo da PALAVRA do computador. Normalmente, o tamanho máximo do Registrador, endereço este que irá trafegar no Barramento de Endereços, já estudado em aulas anteriores. Representação do endereço É a quantidade de bits necessária para representar a quantidade de memória. Se analisarmos desta maneira, sabemos que 1 bit consegue representar 2 endereços de memória, ou seja, 0 e 1. Sendo assim, podemos considerar algumas fórmulas para facilitar a representação de endereços de células na Memória Principal. Fórmulas: Quantidade células possíveis para de se endereçar com x bits. N = 2 elevado a x. Onde x é o total de bits que será usado para endereçamento. Assim, com 8 bits, conseguimos endereçar o total de 256 células, uma vez que 28 = 256 células de memória de 8 Bits, ou 256 Bytes. Capacidade de memória Você deve estar se perguntando... como se calcula a capacidade de memória de um equipamento? Deve-se calcular o número total de endereços (total de células) x tamanho de cada célula de memória. Vamos entender melhor através de um .Exemplo Total de Endereços: 1024 / Tamanho da célula: 8 bits (ou 1 byte). Tamanho MP: 1024 bytes. Classificações da memória As memórias podem ser classificadas de diversas maneiras. Veja alguns exemplos importantes: 1)Quanto à forma de acesso ● Aleatória (RAM) Significa que o tempo de acesso será o mesmo, independentemente de onde se encontra a célula. O termo acesso aleatório se relaciona à capacidade de acesso em qualquer posição de memória e em qualquer momento para gravação e leitura de conteúdo.● Não aleatório (Memórias Secundárias) O tempo de acesso dependerá de onde o dado se encontra e tem relação com o acesso sequencial, imposto por alguns dispositivos de armazenamento, como uma unidade de fita. 2)Quanto ao acesso de leitura e escrita ● R/W Read and Write ou memória de leitura e escrita. Este tipo de memória permite operações de escrita e leitura pelo usuário e pelos programas. É uma memória volátil, ou seja, perde seu conteúdo na falta de energia. ROM Read Only Memory ou memória apenas de leitura. Esta memória permite apenas a leitura. Seu conteúdo, uma vez gravado, não pode mais ser alterado. Foi muito utilizado inicialmente por fabricantes de computadores para gravar programas que não deviam ser apagados (por exemplo a BIOS - Basic Input Output System de computadores). É um tipo de memória não volátil. PROM Programmable Read Only Memory ou memória apenas de leitura, programável. Esta memória é uma ROM Programável. Diz-se programável pois ela poderia ser comprada “virgem”, sem conteúdo, e, uma vez gravado o conteúdo com os gravadores de PROM, não podiam mais ser alterados. EPROM Erasable Programmable Read Only Memory ou memória apenas de leitura. Assim como a PROM, poderia ser gravado com os gravadores de PROM apropriados, mas poderiam também ter seu conteúdo apagado utilizando-se máquinas específicas, baseadas em raios ultravioleta. Não foi muito utilizado depois da chegada da EEPROM. EEPROM (OU E2PROM) Electrically Erasable Programmable Read Only Memory ou memória apenas de leitura, programável e eletronicamente alterável. Também chamada EAROM (Electrically Alterable ROM). Esta sim é uma memória EPROM, agora apagável por processo eletrônico, com equipamento e programas adequados. Apesar de mais cara, é geralmente utilizada em dispositivos em que se deseja permitir alteração, possibilitando a carga de novas versões de programas ou então para possibilitar a reprogramação dinâmica de funções específicas de um determinado programa ou equipamento. Atualmente, grande parte dos equipamentos, sejam eles notebooks ou desktops, possuem sua atualização de BIOS ou Firmware baseado em EEPROM, em que sua atualização não depende da troca de hardware, mas somente da execução de um programa que faz toda a sua alteração eletrônica. FLASH Um tipo específico de EEPROM, que é escrita e apagada em blocos, ao contrário das EEPROMs convencionais, em que é possível apagar cada byte, ao invés de grandes blocos de dados. EEPROMs convencionais são bem mais caras. Poderiam ser utilizadas para substituir os discos rígidos, porém se desgastam após serem apagadas 100 mil vezes. Ao passo que discos duram muitos anos, não importando quantas vezes sejam reescritos. O custo do byte armazenado em uma memória flash também é bem maior do que o custo do byte em um disco rígido convencional, como pode ser visto hoje com os discos SSD. 3)Quanto à tecnologia de construção * SRAM (Static RAM) São memórias de conteúdo estático, que não dependem de atualizações periódicas de alimentação de energia para manterem os valores armazenados. Estes tipos de memória, por serem mais rápidas e de custo mais elevado, são utilizadas principalmente na construção de memórias cache. ● DRAM (Dynamic RAM) Essas memórias têm tempo de acesso maior, na faixa de 60ns e são as mais comuns hoje em dia. A Memória Principal normalmente emprega essa tecnologia. Como seu conteúdo é perdido em alguns instantes, elas precisam ser periodicamente atualizadas (ciclo de “refresh”) e com alimentação constante de energia, o que faz com que fiquem indisponíveis para novas transferências em intervalos regulares. São as memórias utilizadas na construção da memória RAM. Memória secundária Memórias secundárias ou memórias auxiliares são dispositivos de armazenamento em massa, não deixando de ser importantes no subsistema de memória, principalmente na resolução de problemas de armazenamento de grande quantidade de informações, bem como pelo falo de serem memórias não voláteis, ou seja, a informação não é perdida quando a mesma perde a alimentação de energia elétrica. A capacidade da Memória Principal é limitada pelo seu relativo alto custo. As memórias auxiliares, ao contrário, têm maior capacidade e menor custo. Portanto, o custo por bit armazenado é muito menor. A memória secundária em sistema de computação pode ser formada por diferentes tipos de dispositivos, alguns acessados diretamente e de forma constante pelo sistema operacional (disco rígidos - Hard Disks – HD, ou os atuais discos SSD) e outros que podem ser conectados quando desejados (Pen Drives, CD-ROM, etc). ⟹ Lembrando que uma das principais características dos dispositivos que constituem as memórias secundárias é sua NÃO VOLATILIDADE, isto é, não dependem de estar energizados para manter seu conteúdo gravado. Veja algumas características importantes quanto a outros dispositivos de armazenamento secundário: TEMPO DE ACESSO Uma vez que muitos são dispositivos eletromecânicos e não circuitos puramente eletrônicos (a exemplo dos discos rígidos, CD-ROM, DVD-ROM, entre outros), seu tempo de acesso é muito mais elevado. O acesso a um dado no disco rígido, por exemplo, depende do deslocamento do braço que contém a leitora e do movimento de rotação do disco. Dessa forma, todos os processos mecânicos a serem executados por esses dispositivos jamais se compararão em termos de velocidade a um acesso aleatório de uma célula da Memória Principal, que depende apenas de um sinal elétrico para localizar um conteúdo na memória. CAPACIDADE Um dos grandes atrativos dos dispositivos de Memória Secundária é sua alta capacidade de armazenamento, que chegam a dezenas e até centenas de GBytes. VOLATILIDADE: Como esses dispositivos armazenam as informações de forma magnética ou ótica, elas não se perdem nem desaparecem quando não há alimentação de energia elétrica.o é, não dependem de estar energizados para manter seu conteúdo gravado. Disco Rígido: Em termos de Memória Secundária, ainda é muito utilizado o Disco Rígido, formado por uma estrutura eletromecânica de discos de platina, em que a leitura é feita por um cabeçote, que, através da indução, efetua a leitura dos dados, sem efetivamente ter o contato físico com o disco.Apesar de ainda ser o mais utilizado, oferece riscos maiores para falhas por ser um dispositivo eletromecânico. Por isso, a cada dia cresce o uso dos discos SSD (Solid State Disk), que são discos puramente eletrônicos, formados por células de memória flash e que não dependem de dispositivos eletromecânicos para seu funcionamento. Isso aumenta consideravelmente sua velocidade, como também seu custo, cujo o GByte ainda é consideravelmente mais caro do que o custo oferecido pelo Disco Rígido. Basicamente, a função principal dos discos HDD (Hard Disk Drive) e SSD (Solid State Drive) são as mesmas, ou seja, o armazenamento de grande volume de dados não volátil. A principal desvantagem do SSD em relação ao HD ainda hoje é o preço devido ao fato de que o SSD é uma tecnologia puramente eletrônica, em que discos magnéticos foram trocados por memórias flash, de forma que o custo por GB de armazenamento ainda é mais caro. Porém, os SSDs se destacam quando o assunto é velocidade. Em uma pequena comparação com um HDD, o tempo de boot de um sistema operacional Windows em um mesmo equipamento cai para menos da metade em um disco SSD. AULA 10 COMPONENTES DA MEMÓRIA PRINCIPAL - BARRAMENTO DE DADOS: Interliga o RDM à memória principal para a transferência de informações. É bidirecional - REGISTRADOR DE DADOS DA MEMÓRIA (RDM): Registrador que armazena temporariamente as informações que está sendo transferida de/para a memória - BARRAMENTO DE ENDEREÇOS: Interliga o REM à memóriaprincipal. É unidirecional COMPONENTES DA MEMÓRIA PRINCIPAL - REGISTRADOR DE ENDEREÇOS DA MEMÓRIA: Registrador que armazena temporariamente o endereço de acesso - BARRAMENTO DE CONTROLE: Interliga a unidade de controle do processador à memória principal para envio de sinais durante as operações de leitura escrita - CONTROLADOR DE MEMÓRIA: Responsável por gerar os sinais necessários para controle do processo de leitura e escrita, além de interligar a memória aos demais componentes do sistema Organização da memória principal ➔células Palavra ➔ conjunto de células com significado Unidade de transferência ➔ quantidade de bits transferidos de/para a memória Capacidade de memória ➔ quantidade de informações armazenadas N = número de células * tamanho da célula Memória CACHE -O acesso a cache é transparente para a aplicação e para o sistema operacional, uma vez que todo o gerenciamento da memória cache é feito por hardware -O processador inicia a operação de leitura para o endereço desejado da Memória Principal -O sistema de controle da cache intercepta o endereço e conclui se o dado solicitado está ou não armazenado na cache. Um acerto é denominado cache hit e a falha é denominada cache miss -Se ocorrer um cache miss o controlador da memória principal é acionado para localizar o dado na memória, transferindo-o para a cache. Um novo acesso é feito a memória cache Transmissão serial Na transmissão serial, o periférico é conectado ao dispositivo controlador (veremos posteriormente) ou interface de E/S por uma única linha de transmissão de dados. Nesse tipo de transmissão, a informação é transmitida/recebida bit a bit e, por não haver necessidade de controle e gerenciamento como o paralelo, é de fácil controle e implementação. Por essa facilidade, o uso deste tipo de transmissão, bem como tecnologias disponíveis, têm crescido consideravelmente. Por exemplo, a porta USB (Universal SERIAL Bus, ou barramento SATA - SERIAL ATA), são tecnologias padronizadas no uso de equipamentos. Transmissão paralela Na transmissão em paralelo, um grupo de bits é transmitido de cada vez, cada um sendo enviado por uma linha separada de transmissão. A informação é transmitida/recebida em grupos de bits de cada vez, simultaneamente. Por ser feita dessa forma, os sinais de cada linha de barramento precisam chegar simultaneamente. Sendo assim, é difícil de controlar, pois os mecanismos de verificação desse “paralelismo” têm de custo elevado. Controladora de E/S A CPU e Memória Principal não se comunicam diretamente com o periférico, necessitando de uma interface de comunicação entre CPU/MP e o periférico, conhecidos normalmente como controladoras de E/S, conforme mostra a figura: Esquema de comunicação dos componentes do computador que são: CPU, memória, monitor, teclado, leitor de disco, e HD. A CPU e a memória se comunicam sem intermédio de controladores, ao contrário do Monitor, teclado, leitor de disco e HD que necessitam de controladores para a comunicação. Esses dispositivos ficam interligados através de barramento ou “bus” e normalmente possuem unidades de memória (registradores) para comunicação com a CPU, que se comunica com sua controladora, responsável por converter o fluxo de bits em um bloco de bytes, executando também as correções de erros necessárias e tornando os dados disponíveis para serem copiados para a MP. Sendo assim, as controladoras de E/S são um hardware que controla uma porta, barramento ou dispositivo e sua comunicação com a CPU, ou seja, quando um programa precisa de dados do disco, por exemplo, ele envia um comando ao controlador de disco, que emite um sinal de comando como “seek” à unidade de disco. Controladora de E/S - Processo de comunicação 1 Inicialmente, a CPU interroga o dispositivo, enviando o endereço do dispositivo e um sinal dizendo se quer mandar ou receber dados através da controladora; 2 A controladora, reconhecendo seu endereço, responde quando está pronta para receber (ou enviar) os dados; 3 A CPU então irá transferir (ou receber) os dados através da controladora; 4 A controladora responderá à CPU confirmando que: • Recebeu (ou transferiu) os dados (“Acknowledge” ou ACK); ou • Não recebeu os dados, neste caso solicitando retransmissão (“Not-acknowledge” ou NAK). Device Drivers Para que o Sistema Operacional possa se comunicar com novos periféricos e dispositivos interligados ao sistema de computação, é necessário que ele reconheça esses dispositivos. Dessa forma, podemos entender como Device Driver o software que permite que o sistema operacional e este dispositivo específico possam se comunicar dentro do processamento da CPU. Normalmente, por se tratar de um novo periférico a ser instalado no sistema de computação, o driver é desenvolvido pela mesma empresa que projetou e fabricou o dispositivo, de forma que o driver serve como complemento a fim de traduzir as requisições de alto nível (feitas pelo usuário) para o dispositivo específico (junto à controladora), podendo também trabalhar junto à controladora de E/S na conversão de dados e detecção e correção de erros, garantindo o correto funcionamento do dispositivo. Formas de comunicação entre CPU/MP e interface de E/S Existem formas de comunicação da CPU e Memória Principal com as interfaces de entrada e saída. Para qualquer tipo de comunicação, sempre há o armazenamento de conteúdo de dados em memória, a fim de que este conteúdo possa ser trafegado durante o processamento. Porém, esta comunicação pode se diferir pelo tipo de memória utilizada durante esse processamento, sendo eles: Memória compartilhada Nesse tipo, a memória principal é compartilhada tanto por instruções e dados comuns de um programa quanto por instruções/dados de operações de E/S, sendo necessário somente lançar no barramento de controle o comando de leitura/escrita que deve ser executado, pois a memória principal é justamente a memória utilizada neste tipo de operação. Vantagem Não necessita de instruções especiais para processamento. Desvantagem Ocupa parte do espaço da memória principal para seu processamento. Memória isolada Nesse exemplo, existe uma memória isolada. Consiste em criar um espaço de memória próprio de E/S para aquela operação, não utilizando assim uma parcela da memória principal. Para isso, é necessário um sinal de identificação a fim de saber se a instrução a ser processada é de E/S ou não, pois o local de armazenamento do conteúdo a ser processado estará em local diferente. Vantagem Não utiliza espaço da memória principal. Desvantagem Necessita de instruções especiais. Formas de realização de entrada/saída Agora que estudamos como funciona a comunicação dos dispositivos de entrada e saída em um Sistema de Computação, é importante entender como é realizada a comunicação de entrada e saída nos mesmos. Existem três tipos principais: 1. E/S PROGRAMADA Nesse tipo, a CPU lê constantemente o status do controlador de E/S e verifica se já acabou o processamento (Polling ou Busy-waiting), espera até o fim da operação para dar continuidade aos demais. Há um intenso uso da CPU, bem como uma ociosidade de tempo, uma vez que o polling faz com que existam momentos de espera no processamento. 2. E/S COM EMPREGO DE INTERRUPÇÃO Muito utilizada na arquitetura atual, como o próprio nome diz, nesse tipo, a CPU solicita a transferência de um processamento à controladora e desvia-se para outra atividade, sem aguardar que o processamento seja finalizado. Dessa forma, ela pode se preocupar com outros processamentos até que o mesmo seja finalizado pelo dispositivo de E/S, que, ao finalizar, avisa à CPU, por meio de um sinal de interrupção, que faz com que a CPU “desvie” sua atençãopara o resultado do processamento requisitado. Tipos de interrupção: Internas: Geradas pela execução de uma instrução. Exemplo: Divisão por Zero, etc. Externas: Geradas por um sinal externo à CPU. Utilizadas na comunicação com periféricos. 3. ACESSO DIRETO À MEMÓRIA (DMA – DIRECT MEMORY ACCESS) Controlador de DMA: Permite a transferência de dados entre uma interface e a MP praticamente sem intervenção da CPU. CPU solicita transferência. Controlador sinaliza final através de interrupção. Tratamento de interrupção (Interrupt Handler) O tratamento de interrupções pode ser resumido pelo exemplo de diálogo abaixo, onde é demonstrada a comunicação SEM interrupção e COM interrupção. Este exemplo pode diferenciar claramente como o emprego de interrupção interfere e auxilia na otimização do processamento em um Sistema de Computação. É importante reforçar que cada tipo de interrupção tem um tratamento específico a ser feito. Se estivermos falando de um click do mouse, o “mecanismo de tratamento” vai verificar que o botão foi pressionado e, dependendo do botão (vamos considerar um mouse de 2 botões), uma operação diferente será executada. Geralmente, a CPU utiliza o código identificador do botão pressionado para um endereço específico de memória e cada programa irá tomar sua decisão do que será feito quando este “click” for efetuado, seja ele um navegador de internet, um jogo, entre outros aplicativos. Quando esse processo de interrupção pelo mouse é encerrado, o tratamento também é encerrado, e a CPU volta à execução do programa que havia sido interrompido para tratar o “click” do mouse, restaurando todos os valores, salvos antes da interrupção, e retomando exatamente do ponto em que parou. Tipos de interrupções 1. Maskable interrupt (IRQ) É uma interrupção de hardware que pode ser ignorada por configurar um bit em um registro da máscara de interrupção (IMR) bit-mask. 2.Non-maskable interrupt (NMI) É uma interrupção de hardware que carece um bit-mask associado. Então, isso nunca pode ser ignorado. NMIs são frequentemente usados por timers, especialmente por watchdog timers. 3.Inter-processor Interrupt (IPI) Caso especial gerado por um processador para interromper outro processador em um sistema de multiprocessadores. 4.Software Interrupt É uma interrupção gerada dentro de um processador pela execução de uma instrução. Interrupções de software são frequentemente usadas para implementar chamadas de sistema porque elas implementam uma chamada de sub-rotina com a mudança de nível da CPU.
Compartilhar