Baixe o app para aproveitar ainda mais
Prévia do material em texto
Organização de Computadores Material Teórico Responsável pelo Conteúdo: Prof. Ms. Fábio Peppe Beraldo Revisão Textual: Profa. Esp. Márcia Ota Memórias e Dispositivos de E/S • Memórias • Fechamento • Simulador · Nesta unidade, tem-se por objetivo capacitar o aluno a identificar os vários tipos de memória do computador e como seu funcionamento otimizado melhora o sistema e o desenvolvimento do programa. OBJETIVO DE APRENDIZADO Olá, aluno (a)! Nesta Unidade, aprenderemos os tipos de memórias existentes, como a memória cache, memória virtual, memória principal, a hierarquia de memória e o DMA. Também serão estudados os dispositivos de E/S mais comuns e seus barramentos. Além disso, para que a sua aprendizagem ocorra num ambiente mais interativo possível, na pasta de atividades, você também encontrará as atividades de avaliação, uma atividade reflexiva e a videoaula. Cada material disponibilizado é mais um elemento para seu aprendizado, por favor, estude todos com atenção! ORIENTAÇÕES Memórias e Dispositivos de E/S UNIDADE Memórias e Dispositivos de E/S Contextualização Classicamente, define-se a organização de memórias de um computador, de acordo com sua hierarquia, sendo os níveis mais altos dessa hierarquia as memórias de auxílio ao trabalho da CPU, como os registradores. Há também as memórias cache, a memória virtual, memória principal até chegarmos ao DMA, sem nos esquecermos das memórias de transporte de dados. Bom estudo! 6 7 Memórias O conceito de memórias e seu funcionamento sempre foram bastante fáceis de compreender; porém, o que acaba confundindo é a grande quantidade de tipos de memórias diferentes que existem e para quem elas prestam trabalho, sendo, muitas vezes, um múltiplo trabalho. Por mais avançadas que essas memórias sejam, nenhuma delas resolve os problemas do hardware e/ou do software de forma otimizada, sempre havendo um ponto frágil em cada tipo e sempre uma suprindo a falha da outra, daí a importância da hierarquia de memórias. Podemos conceitualizar melhor a descrição de trabalho se as dividirmos em classes e caracterizarmos cada classe, como pode ser visto na tabela 1. Tabela 1: Características fundamentais de sistemas de memória de computadores Característica Descrição Localização • Processador • Interna (principal) • Externa (secundária) Capacidade • Tamanho da palavra • Número de palavras Unidade de Transferência • Palavra • Bloco Método de Acesso • Sequencial • Direto • Aleatório • Associativo Desempenho • Tempo de acesso • Tempo de ciclo • Taxa de transferência Tecnologia • Semicondutores • Magnética • Óptica Características Físicas • Volátil/ não volátil • Apagável/ não apagável Fonte: Stallings, W., Arquitetura e Organização de Computadores A principal característica a ser associada a uma memória é sua capacidade que é expressa internamente pela palavra e, externamente, por bytes. Palavra é uma unidade utilizada em computação para medir a quantidade de bits usados para representar números inteiros ou o tamanho da instrução, definindo, assim, a capacidade do processador pela quantidade de palavras executas por ciclo. Além da capacidade de palavras possíveis de se carregar para a CPU, há também a transferência de dados, que é o número de linhas de dados do módulo de memória, normalmente, igual ao tamanho da palavra. Para tanto, usa-se uma unidade endereçável que é o endereçamento de bytes que, na maioria dos sistemas, é a própria palavra, e a unidade de transferência, que são quantos bits podem ser lidos ou escritos da/para memória principal. 7 UNIDADE Memórias e Dispositivos de E/S Mas como essas memorias são acessadas? Há diferentes formas, por exemplo: · Acesso sequencial: Nesse tipo de acesso, é feita a organização dos dados dentro das memórias em unidades chamadas registros, como já falamos anteriormente na disciplina. Além de dados, são armazenadas informações como endereçamentos. · Acesso direto: assim como com o acesso sequencial, o acesso direto emprega um mecanismo compartilhado para leitura e escrita. Entretanto, cada bloco individual ou registro possui um endereço único, baseado em sua localização física. O acesso é feito por meio de um acesso direto a uma vizinhança genérica do registro e, em seguida, por uma pesquisa sequencial, por contagem ou por espera até atingir a posição final. · Acesso aleatório: no método aleatório, cada posição de memória recebe um mecanismo de endereçamento unido e ligado a ela de forma física. Assim, qualquer posição de memória pode ser acessada a qualquer momento aleatoriamente e não mais, sequencialmente, ao processo. · Associativo: consiste em um tipo de memória de acesso aleatório que possibilita comparar simultaneamente certo número de bits de uma palavra com todas as palavras da memória, determinando quais dessas palavras contêm o mesmo padrão de bits. Chegando à característica de desempenho, considerada por muitos a mais importante, temos sua medição feita através de três elementos. · Tempo de acesso: nada mais é que o tempo que se gasta para efetuar uma operação de leitura ou de escrita; é o tempo decorrido desde o momento em que é feita a referência de um endereço na memória até o instante em que os dados são, efetivamente, armazenados na memória ou são executados. · Tempo de ciclo de memória: é a soma do tempo de acesso e o tempo adicional necessário antes de um segundo acesso. Esse tempo adicional é, geralmente, usado no caso de necessidade de regeneração de dados, em caso de corrompimento dos dados da leitura. · Taxa de transferência: é a taxa, na qual os dados podem ser transferidos de/ou para a unidade de memória. Na memória de acesso aleatório, é inversamente proporcional ao tempo de ciclo (1/tempo de ciclo). Para medirmos essa taxa de transferência de dados, podemos usar a seguinte equação: T T N RN A = + Onde: TN = tempo médio de leitura ou escrita de (N) bits TA = tempo médio de acesso N = número de bits R = taxa de transferência em bits por segundo (bps) 8 9 As características físicas são determinantes para sabermos como que determinada memória funciona, por exemplo, em uma memória volátil, como a RAM, os dados são perdidos quando a energia é desligada da memória. Já nas memórias não-voláteis, os dados não são apagados e nenhuma energia é necessária para manter esses dados “vivos” na memória, como nas memórias de superfície magnética. Há também as memórias de construção a base de semicondutor que podem ser somente de leitura, como é o caso da ROM. Hierarquias de Memória Na verdade, os elementos mais importantes para uma memória, mais especificamente, para o projeto de uma memória são sua capacidade, velocidade e seu custo. A capacidade é importante para o objetivo da memória, por exemplo, o mercado cada vez mais pede memórias de tráfego de dados e armazenamento. Assim, fabricantes desenvolvem memórias RAM e HDDs/SSDs cada vez mais potentes. A velocidade está ligada diretamente a capacidade, pois, para um melhor desempenho, a memória deve ter uma mais velocidade que, por sua vez, é compatível com a da CPU; isso significa que o processador não deve ficar esperando operandos ou opcodes para executar uma instrução, pois gera ociosidade e, por consequência, lentidão de processamento. Ambos, capacidade e velocidade, são extremamente influentes no custo da memória, o que faz com que mercadologicamente existam dezenas de tipos de memórias diferentes para a mesma função, para que assim possam ser adquiridos por diversos níveis de mercado, conforme sua possibilidade de aquisição. O programador ou engenheiro deve sempre levar em consideração esses elementos, pois, apesar de querer o máximo de seu equipamento ou programa, ele deve lembrar o foco mercadológico do mesmo: será que trabalhar com equipamentos topo de linha somente, fará com que seu produto seja consumido, ou seria melhor tentar tirar o máximo via arquitetura ou programação de um equipamento de médioporte? Esse dilema sempre existirá! A figura 1 mostra duas formas de separação hierárquica: na parte (a), há a classificação quanto ao tipo de cada memória; e na parte (b), você pode verificar as características de cada classe, como velocidade, custo, capacidade, tamanho e carga, conforme acabamos de aprender. 9 UNIDADE Memórias e Dispositivos de E/S Fontes de Entrada Tipos de dispositivos de armazenamento RAM Cache Teclado - Mouse - Mídia Removível - Scanner - Câmera - Microfone Vídeo - Fontes Remotas - Outras Fontes Memória Física Memória Virtual Nível 1 Nível 2 Registra- dores da CPU ROM - BIOS - Discos Removíveis Armazenamento em Rede - Internet - Disco Rígido Áreas de Armazenamento Temporário Áreas de Armazenamento Permanentes Dispositivos de Armazenamento em Massa RAM CPU Cache Registradores Velocidade: Altíssima Custo: Altíssimo Capacidade: Pouquíssimo Tamanho: Muito Pequeno Energizado: Sim Velocidade: Altíssima Custo: Altíssimo Capacidade: Muito Pouco Tamanho: Muito Pequeno Energizado: Sim Velocidade: Alta Custo: Médio Capacidade: Alta Tamanho: Razoável Energizado: Sim Velocidade: Baixa Custo: Baixíssimo Capacidade: Muito Alta Tamanho: Grande Energizado: Não Figura 1: Representações de hierarquia de memória por classe (a) e por características de funcionamento (b) Fonte: Tanenbaum, A., Organização Estruturada de Computadores Registradores, cache e a memória principal são três exemplos de memórias que empregam o uso de semicondutores. Seus dados são armazenados utilizando dispositivos de massa externos a ele, como memórias físicas ou removíveis conhecidas por memórias secundárias ou não voláteis, que, em sua maioria, são usadas apenas para armazenamento de massa ou backup pelo usuário. A memória principal discutida aqui, também conhecida como memória virtual, possui mais elementos de trabalho não intrínsecos ao hardware, como a paginação e a segmentação; porém, essas técnicas são voltadas para o aumento de velocidade de resposta do sistema e controle do espaço de memória virtual ou o gerenciamento de memória como é conhecido. No entanto, apesar desses conceitos serem melhor abordados na disciplina de sistemas operacionais, serão mencionadas quando falarmos de algoritmos de substituição. 10 11 Memórias Voláteis e Não Voláteis Dentre as memórias voláteis, ou seja, aquelas que perdem os dados quando desligadas, são as memórias de acesso aleatório ou RAM (random access memory), onde os dados são escritos e lidos de forma rápida e, após seu uso, são perdidos. As RAMs ainda podem ser divididas em dois tipos: RAM estática e RAM dinâmica. No caso das RAMs dinâmicas, suas células armazenadoras de dados são feitas com a carga de capacitores, onde a presença de carga elétrica ou não nesse capacitor é interpretada como bit 1 ou 0. Se lembrarmos que os capacitores, naturalmente, possuem carga zero, uma RAM dinâmica sempre precisa ser alimentada para a representação do bit 1. Essa ação chamamos de refresh de carga, o que mantém os dados armazenados por um tempo, dando a impressão de que a RAM está “segurando” a informação momentaneamente. Para o caso de RAMs estáticas, seus valores binários são armazenados segundo o uso de flip-flops com portas lógicas, enquanto houver energia também. O flip- flop é a forma mais simples de representação de um circuito sequencial, pois, uma vez que ele é um dispositivo biestável, existe em um de dois estados estáveis. Se um desses estados deixar de existir, como a ausência de sinal de entrada, o flip-flop permanece nesse estado; logo, ele pode funcionar como uma memória de 1 bit. Apesar do método de funcionamento, há uma diferença mais significante na RAM dinâmica, que é a sua maior densidade, ou seja, possui mais espaços de memória por área, mas precisa ser sempre alimentada usando o refresh, enquanto na RAM estática ela está sempre em bit 1 e apenas um sinal a torna 0 e não a alimentação constante do refresh; por esse fator, as RAMs estáticas são mais rápidas que as dinâmicas. No entanto, agora, depende do engenheiro saber otimizar a memória de trabalho que tem em mãos. Uma parente próxima da RAM é a memória apenas de leitura ou ROM (read only memory) que armazena uma informação constantemente e inalteradamente; dessa forma, só é possível ler essa informação. Normalmente, as ROMs são utilizadas na microprogramação com funções bem definidas, como tabelas de funções ou bibliotecas de sub-rotinas. As ROMs são um tanto caras, pois a forma de gravação de dados nela é mais complexa que nas demais, sendo feita durante a construção do seu circuito integrado ou equipamentos especiais e caros. Uma alternativa que surgiu foi a ROM Programável ou PROM (programmable ROM), que também não é volátil, mas seus dados são gravados de forma muito mais simples, de forma elétrica através de equipamentos um pouco mais baratos. A PROM gerou ainda outras variações como a EPROM, EEPROM e Flash. No caso da EPROM ou memória programável apenas de leitura, seus dados podem ser apagados por processo óptico e, então, novos dados regravados, funcionando como uma formatação da memória, mas fica um problema: esse processo é demorado demais para uma CPU. 11 UNIDADE Memórias e Dispositivos de E/S A variação EEPROM ou memória apenas de leitura programável e apagável eletricamente é extremamente parecida com suas antecessoras, diferenciando apenas que, nesse modelo, não é preciso a formatação da memória para a gravação de novos dados, apenas uma área específica pode ser selecionada para a regravação de forma elétrica. A variação Flash só tem esse nome devido à velocidade com que pode ser reprogramada (Talvez, EEEPROM não ficaria legal? rs). Além disso, é o avanço direto da EEPROM, em que, agora, pode ser apagado byte por byte e não mais blocos e ela ainda passa a usar um único transistor por bit, o que aumenta, consideravelmente, sua densidade de informações possíveis de ser armazenadas. Memórias Cache A memória cache tem a função básica de ser intermediária entre a CPU e a memória principal, conforme a figura 2. Memória Principal Transferência de Blocos Transferência de Palavras CACHE CPU Figura 2: Fluxo de trabalho entre CPU e memórias Fonte: Acervo do Autor Isso ocorre porque as instruções e dados estão sempre alocadas na memória principal; porém, essa memória é grande e lenta para a CPU, ou seja, quando a CPU quer ler algo, primeiro checa se uma cópia do dado necessário já está na memória cache antes que o requerimento do carregamento desse dado na memória principal seja feito, e essa ação acelera demais o processamento. Caso esse dado não esteja na cache, ele será carregado na memória principal e o dado desejado será copiado para a cache e, então, fornecido à CPU para execução, criando uma ociosidade de processamento. Esse trabalho todo pode ser visto na figura 3. 12 13 Obtém o conteúdo da palavra no endereço RA e entrega para CPU Aloca linha da cache para o bloco da memória principal Carrega o bloco da memória principal na linha da cache Entrega a palavra em RA para a CPU Obtém o conteúdo da palavra no endereço RA e entrega para CPU Recebe endereço RA da CPU Efetua acesso à memória principal para obter o bloco que contém RA Fim Início Não Sim Figura 3: Operação de leitura em memória cache Fonte: Tanenbaum, A., Organização Estruturada de Computadores Projetando uma memória cache O tamanho de uma cache é um fator muito importante na hora do projeto, pois o tamanho de uma memória cache deve ser suficientemente pequeno para que o custo total médio por bit seja próximo do custo por bit da memória principal e deve ser suficientemente grande para que o tempo médio de acesso à memória seja próximo ao tempo de acesso da memória cache. Se aumentarmos demais o tamanho da memória cache, também aumentaremos a quantidade de portas envolvidas na construção e isso tornará a memória lenta. Uma função importante de se observar é o mapeamento da cache, isso ocorre, pois aslinhas de memória da cache são menores do que o de blocos da memória principal. Então, para não haver a perda do dado, este é mapeado via mecanismo de mapeamento que pode ser direto, associativo ou associativo por conjunto. Vamos considerar o seguinte exemplo para fazermos o mapeamento: No mapeamento direto, divide-se a memória principal em conjuntos de células que são armazenadas nas células da cache e, então, é feito um mapeamento diretamente estre os blocos da memória principal e as células da cache e isso permite que um bloco seja associado à sua contraparte na cache “diretamente”. Esse método, por ser sempre ligado diretamente entre a memória principal e a cache, gera uma ociosidade no sistema pela demora na resposta para a instrução. 13 UNIDADE Memórias e Dispositivos de E/S 0 0 1 2 3 401 Tag LinhaDados O�set 5 6 7 (000) (001) (010) (011) (100) (101) (110) (111) 0000...01 100 O�set Tag Endereço da Palavra Exemplo: End. linha = 12 mod 8 = 4 tag = [12/8] = 1 Linha O�set Memória Cache 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 31 Memória Principal Figura 4: Funcionamento do Mapeamento Direto da Cache No mapeamento associativo, não há um lugar fixo na cache para os blocos da memória principal serem relacionados. Esses endereços da memória principal são interpretados igualmente no mapeamento direto, mas seu número de bits requeridos para a determinação do rotulo da memória principal é maior. Esse método que mistura gera uma maior associação entre a cache e a memória principal, mas consome maior processamento. 0 01100 TagDados O�set 000000...01100 O�set Tag Endereço da Palavra Exemplo: tag = 12(011002) O�set Memória Cache 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 31 Memória Principal Figura 5: Funcionamento do Mapeamento Associativo da Cache 14 15 Obviamente, o mapeamento associativo por conjuntos veio para eliminar as deficiências dos modelos anteriores, fazendo com que blocos da memória principal sejam associados a um conjunto de linhas da cache, daí o nome. 0 011 Tag Conjuntos (sets)Dados O�set 011 00 O�set Tag Endereço da Palavra Exemplo: two-way set associative tag = 12/4 = 3 (0112) set = 12 mod 4 = 0 Set O�set Memória Cache 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 31 Memória Principal Figura 6: Funcionamento do Mapeamento Associativo por Conjunto da Cache Algoritmos de substituição A substituição deve ser feita quando algum bloco da memória principal é mapeado para a memória cache, na qual um bloco deve ser retirado para liberar espaço. Para tanto, o mapeamento associativo e o mapeamento associativo por conjuntos necessitam do uso de algoritmos que façam essa substituição acontecer. Há 4 principais algoritmos de substituição que devem ser sempre implementadas em hardware para acelerar o processo. Um dos mais utilizados algoritmos é o LRU (least recently used) que baseia seu trabalho na substituição do bloco menos recentemente utilizado, ou seja, o bloco que será retirado do conjunto é aquele que não é usado há mais tempo. Nesse algoritmo, cada linha irá incluir um bit adicional, o bit de uso, e quando uma linha for referenciada será atribuído valor 1 a esse bit de uso e o bit de uso da outra linha do conjunto recebe valor 0. E quando um novo bloco for armazenado, ele ocupará o bit 0 da linha no conjunto. Outro algoritmo de substituição é o FIFO (first-in-first-out), ou seja, o primeiro a chegar é o primeiro a sair ou o bloco a ser substituído é o que está no conjunto há mais tempo. O LFU (least frequently used) determina que o bloco a ser substituído será aquele que foi utilizado menos vezes e funciona implementando um contador a cada linha da cache. 15 UNIDADE Memórias e Dispositivos de E/S Outra técnica não é baseada no histórico de uso das linhas da memória cache e substitui aleatoriamente uma das linhas candidatas. Estudos baseados em simulação mostram que a substituição aleatória apresenta um desempenho apenas levemente inferior ao de um algoritmo baseado no histórico de uso das linhas (Smith, 1982). Há ainda algumas técnicas de substituição baseadas em sistema operacional e não no hardware, mas também são de supra importância para que não haja ociosidade de CPU ou de SO. A troca de processos na memória ou swapping é uma delas. Essa técnica gerencia a fila de processos que aguardam ser executados dentro da memória principal. No caso desses processos não estarem prontos ainda ou não tenham sido chamados para execução, a fila acaba enchendo e, por consequência, a ociosidade do sistema começa a aumentar. O swapping não permite essa ociosidade, uma vez que ele troca um desses processos, retirando-o da memória para uma fila intermediária no disco, em uma área chamada área de swap, que contém processos já criados, mas que foram temporariamente retirados da memória. O sistema operacional, então, carrega na memória um outro processo dessa fila intermediária ou atende a uma nova requisição de processo da fila de longo prazo. Assim, a CPU continua com o processo recém-carregado na memória. Usando do particionamento de memória principal, que consiste em dividi-la em partes iguais de tamanho fixo, relativamente pequenas, podemos dividir também cada processo dentro dessas partições em pedaços menores ainda, também de tamanho fixo. Esses pedaços de processos são chamados de páginas e são alocados em partes disponíveis da memória chamados frames. Dessa forma, o espaço desperdiçado na memória com a carga de um processo é, então, apenas uma fração do último bloco alocado ao processo. Por fim, há uma técnica mais potente ainda: a segmentação, a qual permite ao programador ou engenheiro de software visualizar a memória como um conjunto de espaços endereçáveis ou, como são realmente chamados, segmentos. Seus tamanhos já não são fixos, como na paginação, mas, sim, variam dinamicamente pelo sistema operacional, de acordo com taxa de endereçamento das instruções ou pelo programador diretamente e a esses segmentos são atribuídas permissões de acesso à memória principal chamada referência de memória, que nada mais é que um número de segmento e um endereço relativo no segmento, gerando, assim, tabelas de segmentação que auxiliam no mapeamento dos dados. Tamanho da cache Como já discutido anteriormente, o tamanho da cache pode se tornar um problema. No entanto, com o avanço da tecnologia e maiores velocidades necessárias, a memória cache necessitou se adequar a vários tipos de dispositivos e, para tanto, foi dividida em algumas classes ou níveis que diferem na relação tamanho/desenvolvimento. 16 17 · Cache L1: representada por uma pequena parte de memória estática dentro da CPU, sendo dividida em dois níveis: os dados e instruções, geralmente entre 16KB e 128KB. · Cache L2: normalmente, colocada fora da CPU devido ao seu tamanho maior que a L1, o que encareceria demais o chipset do processador. A L2, em suma, é mais uma memória de auxílio à CPU, fazendo o jogo L1 interno e L2 externo, apesar de alguns chipsets usarem o L2 internamente. · Cache L3: Esse modelo utiliza o cache externo das placas-mãe como mais uma memória cache para a CPU. Dispositivos Externos Todas as operações que envolvem dispositivos de entrada e saída são realizadas através de uma extensa gama componentes e aparelhos que são conectados ao computador por meio de uma conexão de módulo, como uma USB e, assim, ocorrem as transferências de dados, informações de controle e informações de estado entre o módulo de E/S e o dispositivo externo, igual quando o sistema operacional pergunta ao usuário como trabalhar com a USB recém conectada. Lógica de Controle Sinais de controle do módulo de E/S Sinais de estado para o módulo de E/S Sinais de dados (bits) de e para o módulo de E/S Dados (especi�cos ao dispositivo) de e para o ambiente Área de armazenamento temporário Transdutor Figura 7: Modelo geral de um dispositivo externo Fonte: Tanenbaum, A., Organização Estruturada de Computadores17 UNIDADE Memórias e Dispositivos de E/S O módulo de E/S possui algumas funções de maior importância como: · Controle e temporização: inclui funções para controlar o fluxo de dados entre os recursos internos e os dispositivos eternos, como a transferência de dados entre o dispositivo e o processador. · Comunicação com o processador: normalmente, essa comunicação segue alguns passos: * Decodificação de comando: o módulo de E/S recebe comandos do processador, enviados tipicamente como sinais, através do barramento de controle. * Dados: os dados são transferidos entre o processador e o módulo de EIS através do barramento de dados. * Informação de estado: como os periféricos são, em geral, muito lentos, é importante conhecer o estado do módulo de E/S. * Reconhecimento de endereço: assim como cada palavra da memória, cada dispositivo de E/S tem um endereço. Dessa maneira, o módulo de EIS deve reconhecer um endereço distinto para cada periférico que ele controla. · Comunicação com dispositivos: a comunicação também envolve os passos anteriores, porém cada tipo de equipamento possui uma velocidade de comunicação, como descrito na tabela 2. · Área de armazenamento temporário de dados: a área de armazenamento temporário de dados é uma área criada para a realização do pré-carregamento dos dados para acelerar a transferência, trabalhando de forma semelhante a cache para a CPU e a memória principal. · Detecção de erro: a detecção de erros ocorre através de um código emitido pelo dispositivo quando houve algum mau funcionamento mecânico ou elétrico ou alterações no padrão de bits transmitidos entre dispositivo e módulo. Dispositivo Comportamento Interação Taxa de dados (Mbit/seg) Teclado entrada humana 0.0001 Mouse entrada humana 0.0038 Captura Voz entrada humana 0.2640 Captura Som entrada máquina 3.0000 Scanner entrada humana 3.2000 Reprodução Voz saída humana 0.2640 Reprodução Som saída humana 8.0000 Impressora Laser saída humana 3.2000 Monitor saída humana 800.00 - 8000.0000 Modem entrada e saída máquina 0.0160 - 0.0640 Rede Cabeada entrada e saída máquina 100.0000 - 1000.0000 Rede Wireless entrada e saída máquina 11.000 - 54.0000 Disco Óptico armazenamento máquina 80.0000 Fita Magnética armazenamento máquina 32.0000 Disco Magnético armazenamento máquina 240.0000 - 2560.0000 18 19 As operações de E/S podem ser realizadas de três formas diferentes, conforme figura 8: · E/S programada: onde os dados são transferidos entre a CPU e o módulo em que uma aplicação tem controle direto sobre a transferência, incluindo a detecção do estado do dispositivo, o envio de comandos de leitura ou escrita e a transferência de dados. · E/S dirigida por interrupção: nesse modelo de transferência, a CPU envia um comando de E/S e continua seu trabalho de execução de instruções e volta a ser interrompido pelo dispositivo de E/S quando a resposta ao comando estiver pronta para ser executada. · DMA: o acesso direto à memória (direct memory access) é uma evolução do modelo de interrupção, sendo ele, agora, o responsável pelos comandos aos dispositivos de entrada e saída, pré-carregamento dos dados em sua memória DMA, interrupção da CPU para entrega dos dados e retomada do processo de transferência. Os comandos de E/S são: · Controle: que tem a função de ativar um periférico e indicar qual ação será executada. · Teste: usado para testar várias condições de estado associadas a um módulo de E/S e seus periféricos. · Leitura: faz com que o módulo de E/S obtenha um item de dado do periférico e o armazene em uma área de armazenamento temporário interna. · Gravação: faz com que o módulo de E/S obtenha um item de dado do barramento de dados e, em seguida, o transmita para o periférico. Próxima Instrução (c) Interrupção DMA > CPU CPU > DMA Executa outras Instruções Envia comando de leitura de bloco para o módulo de E/S Lê o estado do módulo DMA Envio comando de leitura para o módulo de E/S Lê o estado do módulo de E/S E/S > CPU E/S > CPU Pronto Nã o P ro nt o CPU > Memória Próxima Instrução S N (a) Condição de Erro Lê uma palavra do módulo de E/S Escreve uma palavra na memória Veri�ca o estado Terminado? Pronto S Próxima Instrução (b) Interrupção E/S > CPU CPU > E/S Executa outras Instruções E/S > CPU CPU > Memória Condição de Erro Envio comando de leitura para o módulo de E/S Lê o estado do módulo de E/S Lê uma palavra do módulo de E/S Escreve uma palavra na memória Veri�ca o estado Terminado? N Figura 8: Técnicas de entrada de um bloco de dados 19 UNIDADE Memórias e Dispositivos de E/S Para que o DMA realmente funcione, um novo módulo teve de ser adicionado, o DMA passa, então, a simular algumas funções do processador e também toma o controle do barramento do sistema. Uma das formas de interrupção da CPU pela DMA é assumir o barramento da CPU quando esta não o está usando e, assim, o interrompe; isso é chamado de roubo de ciclo. Depois de enviar o comando, a CPU pode continuar executando outras instruções. A execução da operação de E/S é delegada ao módulo de DMA que transfere diretamente todo o bloco de dados, uma palavra de cada vez, diretamente de/ ou para a memória, sem a intervenção do processador. Quando a transferência é concluída, o módulo de DMA envia um sinal de interrupção para o processador. Dessa maneira, o processador é envolvido apenas no início e no fim da transferência do bloco de dados o módulo de DMA, então, transfere uma palavra e retorna o controle para o processador. Fechamento Abordamos, nesta unidade, os conceitos de memórias sobre a cache, a memória principal, as memórias de E/S e a memória virtual. Esses conceitos são de supra importância para a correta determinação de como trabalhar o hardware e o sistema. Para se aprofundar ainda mais, leia o material complementar com atenção e não deixe de fazer a experiência do simulador! Simulador No material complementar, você terá o link para um simulador de hardware, onde você poderá criar várias simulações do gerenciamento de memória. Além disso, há também o link para as experiências de gerência de memória. Então, execute o programa, é leve e nem precisa instalar, mas trará para você a visualização de tudo que você aprendeu nesta unidade, o que irá facilitar seu entendimento. Discuta suas experiências com seus amigos. 20 21 Material Complementar Indicações para saber mais sobre os assuntos abordados nesta Unidade: Sites SOsim: Simulador para o Ensino de Sistemas Operacionais http://www.training.com.br/sosim/ Vídeos Maravilhas Modernas: A Evolução da Memória https://www.youtube.com/watch?v=vIY2fSwkUYQ Que es la memoria Cache y como funciona en los procesadores CPU https://www.youtube.com/watch?v=m09ZK3ngcHg Como escolher uma boa memória ram? https://www.youtube.com/watch?v=rKAJwmJm3QY 21 UNIDADE Memórias e Dispositivos de E/S Referências MONTEIRO, Mario A.; A Organização de Computadores; 5ª Ed.; Editora: LTC; 2012. TANENBAUM, Andrew S.; Organização Estruturada de Computadores; 5ª Ed.; Editora: Pearson Education; 2006. 22
Compartilhar