Você está na página 1de 24

Organização

de Computadores
Material Teórico
Memórias e Dispositivos de E/S

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

OBJETIVO DE APRENDIZADO
· 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.

ORIENTAÇÕES
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!
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
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
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:
N
TN = TA +
R

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
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édio
porte? 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
9
UNIDADE Memórias e Dispositivos de E/S

Registra-
dores da
CPU
Cache
Nível 1
Nível 2 Áreas de
RAM Armazenamento
Temporário
Memória Física
Memória Virtual
Tipos de dispositivos de armazenamento Áreas de
ROM - BIOS - Discos Removíveis Armazenamento
Armazenamento em Rede - Internet - Disco Rígido Permanentes
Fontes de Entrada
Teclado - Mouse - Mídia Removível - Scanner - Câmera - Microfone
Vídeo - Fontes Remotas - Outras Fontes

Velocidade: Altíssima
Custo: Altíssimo
Capacidade: Pouquíssimo
Tamanho: Muito Pequeno Registradores
Energizado: Sim

Velocidade: Altíssima
Custo: Altíssimo
Capacidade: Muito Pouco CPU Cache
Tamanho: Muito Pequeno
Energizado: Sim

Velocidade: Alta
Custo: Médio
Capacidade: Alta RAM
Tamanho: Razoável
Energizado: Sim

Velocidade: Baixa
Custo: Baixíssimo
Capacidade: Muito Alta Dispositivos de Armazenamento em Massa
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
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
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
Início

Recebe endereço
RA da CPU

Obtém o conteúdo Efetua acesso à memória


Não
da palavra no endereço principal para obter o
RA e entrega para CPU bloco que contém RA
Sim
Obtém o conteúdo Aloca linha da cache
da palavra no endereço para o bloco da
RA e entrega para CPU memória principal

Carrega o bloco da
Entrega a palavra
memória principal na
em RA para a CPU
linha da cache

Fim
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 as linhas 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
13
UNIDADE Memórias e Dispositivos de E/S

Memória Principal
0
1
2
3
4
5 Memória Cache
6 Dados Tag Linha
7
8 0 (000)
9 1 (001)
10 2 (010) Exemplo: End. linha = 12 mod 8 = 4
11 3 (011) tag = [12/8] = 1
12 01 4
13 (100) Endereço da Palavra
14 5 (101) Tag Linha Offset
15 6 (110) 0000...01 100 Offset
16 7 (111)
...
31 Offset
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.
Memória Principal
0
1
2
3
4
5 Memória Cache
6 Dados Tag
7
8
9
10 01100
11 Exemplo: tag = 12(011002)
12
13 Endereço da Palavra
14 Tag Offset
15 000000...01100 Offset
16
...
31 Offset
Figura 5: Funcionamento do Mapeamento Associativo da Cache

14
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.
Memória Principal
0
1
2
3
4 Memória Cache
5 Dados Tag Conjuntos (sets)
6
7 011
8
9 Exemplo: two-way set associative
10 tag = 12/4 = 3 (0112)
11 set = 12 mod 4 = 0
12
13 Endereço da Palavra
14 Tag Set Offset
15 011 00 Offset
16
...
31 Offset
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
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
· 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.

Sinais de Sinais de Sinais de dados (bits)


controle do estado para de e para o
módulo de E/S o módulo de E/S módulo de E/S

Área de armazenamento
Lógica de temporário
Controle

Transdutor

Dados (especificos ao
dispositivo) de e
para o ambiente

Figura 7: Modelo geral de um dispositivo externo


Fonte: Tanenbaum, A., Organização Estruturada de Computadores

17
17
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
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.
Envio comando Envio comando CPU > E/S Envia comando CPU > DMA
de leitura de
de leitura para de leitura para Executa outras bloco para o
Executa outras
o módulo de E/S o módulo de E/S Instruções módulo de E/S Instruções

Lê o estado Lê o estado Lê o estado


Interrupção Interrupção
do módulo E/S > CPU do módulo do módulo
E/S > CPU DMA > CPU
de E/S de E/S DMA
Não Pronto

Próxima Instrução
Verifica o Condição Verifica o Condição (c)
estado de Erro estado de Erro

Pronto Pronto

Lê uma palavra Lê uma palavra


do módulo E/S > CPU do módulo E/S > CPU
de E/S de E/S

Escreve uma Escreve uma


palavra na CPU > Memória palavra na CPU > Memória
memória memória

N N
Terminado? Terminado?
S S

Próxima Instrução Próxima Instrução


(a) (b)

Figura 8: Técnicas de entrada de um bloco de dados

19
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
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
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

Você também pode gostar