Modos de Transferência Introdução Modos Bloqueado, Polling e Interjeição Organização e Arquitetura de Computadores II Prof. Dr. Edson Moreno Capítulo 10.5 do Monteiro Capítulo 7 do Stallings
Modos de Transferência
Introdução
Modos Bloqueado, Polling e Interjeição
Organização e Arquitetura de Computadores II
Prof. Dr. Edson Moreno
Capítulo 10.5 do Monteiro
Capítulo 7 do Stallings
2 / 27
Introdução
• Questões motivadoras para analisar modos detransferência– Quando efetuar a transferência de modo a atender requisitos de
projeto?
– Quais mecanismos para controlar as transferências com eficiência?
• Requisitos– Rápida resposta a eventos críticos
• Eventos de segurança requerem resposta imediata
• Eventos de tempo real têm tempo máximo preciso para seremrespondidos
– Não sobrecarregar CPU com atividades de E/S
• Algumas atividades como acesso à disco e refresh de memória exigemaltas taxas de E/S
– Dois modos básicos
Modos de Transferência
Não programadoProgramado
3 / 27
Impacto de IO no desempenho
• Exemplo:– Suponha que tenhamos um aplicativo que execute em 100
segundos, dos quais 90 segundos são gastos no processador e o
restantes é gasto em atividade de entrada e saída. Se o
desempenho do processador melhora 50% a cada ano, mas não
há qualquer melhora no sistema de entrada e saída, quanto mais
rápido este aplicativo vai ficar mais rápido no final de 5 anos?
Sabendo-se que,
Tmelhorado = Toriginal / (1 + melhora)
e que o ganho de desempenho é dado pelo
Ganho de desempenho = Toriginal / Tmelhorado
4 / 27
Impacto de IO no desempenho
• Exemplo:
– Suponha que tenhamos um aplicativo que execute em 100
segundos, dos quais 90 segundos são gastos no processador e o
restantes é gasto em atividade de entrada e saída. Se o
desempenho do processador melhora 50% a cada ano, mas não
há qualquer melhora no sistema de entrada e saída, quanto mais
rápido este aplicativo vai ficar mais rápido no final de 5 anos?
Após n anosTempo de
processadorTempo de IO Tempo decorrido
% tempo
decorrido de IO
0 90 10 100 10
1 90/1,5 = 60 10 70 14
2 60/1,5 = 40 10 50 20
3 40/1,5 = 27 10 37 27
4 27/1,5 = 18 10 28 36
5 18/1,5 = 12 10 22 45
Ganhos
reduzidos !!!!
5 / 27
Entrada/Saída Programada
• E/S controlada pela CPU
• Procedimento
1. Em instante determinável, processador pergunta para periféricos se
este está apto a receber ou transmitir informação
2. Em caso afirmativo realiza transferência
• Tipos
Interjeição
Bloqueado Polling
Programado
6 / 27
MODO BLOQUEADO
7 / 27
Modo Bloqueado
• Uma vez iniciada a comunicação, a CPU fica bloqueada
– Ocupada e escrava do periférico até terminar a operação
• Problema
– periféricos são muito mais lentos que CPU
• Consequência
– CPU é subutilizada
• Exemplo de utilização
– Máquinas reativas → Esperam ações externas captadas por sensores para
então responder ao meio
– Computador dedicado a tarefas dependentes de um único periférico
• Pesagem → Única atividade da máquina é pesar
8 / 27
POLLING
9 / 27
Polling
• CPU possui controle total da comunicação
– Determina os instantes de tempo que ocorrerão
transferências
• CPU periodicamente testa se algum dispositivo
quer se comunicar
– A pergunta pode ser diretamente em um porta de entrada
da CPU
• Otimização pode ser feita com controladores
– CPU periodicamente testa registradores de estado dos
controladores de E/S
• Estes registradores sinalizam possíveis transferências a serem
realizadas
10 / 27
Polling - Controlador e Periférico
1. Periférico transfere dados para controlador• Coloca dados no barramento
• Ativa sinal send
2. Controlador armazena dados• Dados lidos são colocados em buffers
• Responde ack para periférico
• Sinaliza “dado presente” para CPU ativando flag
3. Controlador habilita novo envio de dados• Remove ack se
• Flag desativada (CPU já buscou)
• Tem espaço no buffer local para mais dados
4. Periférico habilita novo envio de dados• Remove send ao detectar remoção de ack
11 / 27
Polling – CPU e Controlador
1. CPU verifica se tem dados para serem transferidos
• Executa polling periodicamente no registrador de estado
2. CPU lê o dado do controlador
• Quando flag ativa
• Lê dado do barramento
• Armazena dado em memória
3. CPU avisa controlador de leitura com sucesso
• CPU envia sinal de controle para desativar a flag
4. Periférico pode enviar novo dado
12 / 27
Polling – Overrun Error
• No protocolo descrito no slide anterior só são enviados dados
quando ack desativado. Assim, o que acontece quando um
periférico necessita enviar uma rajada de dados?
– Tem que esperar
• Otimização no protocolo
– Permitir que periférico envie novos dados assim que receber ack
• Condição
– Se CPU demorar muito (mais tempo do que a nova escrita de dados) para
ler os dados recebidos
• Motivos possíveis
– CPU mais lenta que o periférico
– CPU ocupada com outras tarefas mais prioritárias
• Problema
– Dados novos podem sobrescrever dados que ainda não foram lidos
• Como amenizar problema?
– Área de armazenamento temporário (buffer) no controlador
13 / 27
Polling – Exercício de Overrun Error
1. Assuma que uma serial assíncrona que escreve em um buffer a
uma taxa de 2 Mbps. Assuma também que há um programa fazendo
a leitura completa por polling deste buffer a cada 100ms. Qual deve
ser o tamanho do buffer para que não haja perda de dados
(sobreescrita pela serial de dado que não foi consumido pelo
programa)?
2. Faça um esquema temporal que ilustre os tempos de escrita no
buffer e leitura de dados
3. Faça um esquema de blocos ilustrando os principais sinais na
comunicação
14 / 27
Polling – Cálculo de Tempo Desperdiçado
• Nos slides seguintes, analise o tempo
desperdiçando para atender por polling os
requisitos especificados em cada caso
15 / 27
Polling – Cálculo de Tempo Desperdiçado 1
• Dados
– CPU lê flag a cada 0,1 µs (10 MHz)
– E/S transfere dados a 1 KB/seg
– Largura do barramento: 1 Byte
• Pergunta
– Quantas leituras desnecessárias são feitas ao flag para uma transferência?
• Resposta
– E/S transfere 1 B/mseg
• 9999 leituras sem sucesso para 1 com sucesso
16 / 27
Polling – Cálculo de Tempo Desperdiçado 2
• Dados
– CPU operando a 50 MHz
– Rotina de polling consume 100 ciclos
• Pede-se
– Tempo de CPU consumido para verificar um mouse, sabendo-se que este
deve ser verificado 30 vezes/seg.
• Resposta
– Quantidade de ciclos gastos pela CPU em todas transferências
• 30 × 100 = 3.000 ciclos/seg
– % de ocupação da CPU
• (3.000 × 100%) / 50×106 = 0,006%
• Conclusão
– mouse não incomoda
17 / 27
Polling – Cálculo de Tempo Desperdiçado 3
• Condições
– CPU operando a 50 MHz
– Rotina de polling consume 100 ciclos
• Pede-se
– Tempo para transferir dados de um periférico
– Taxa de 50 KB/seg, transferindo-se 2 bytes por vez
• Resposta
– Quantidade de transferências por segundo
• (50×103 Bytes / 2 Bytes) = 25.000 transferências/seg
– Quantidade de ciclos gastos pela CPU em todas transferências
• 25.000 × 100 = 2.500.000 ciclos/seg
– % de ocupação da CPU
• (2.500.000 × 100%) / 50×106 = 5%
• Conclusão
– Transferência de dados é tolerável
18 / 27
Polling – Cálculo de Tempo Desperdiçado 4
• Condições
– CPU operando a 50 MHz
– Rotina de polling consume 100 ciclos
• Pede-se
– Tempo para transferir dados de um disco rígido
– Taxa de 2 MB/seg, transferindo 4 bytes por vez
• Resposta
– Quantidade de transferências por segundo
• (2×106 Bytes / 4 Bytes) = 500.000 transferências/seg
– Quantidade de ciclos gastos pela CPU em todas transferências
• 500.000 × 100 = 50×106 ciclos/seg
– % de ocupação da CPU
• (50×106 × 100%) / 50×106 = 100%
• Conclusão
– A CPU deveria ficar dedicada apenas para tratar a transferência de dados
com o disco rígido através de polling
19 / 27
Polling em Vários Dispositivos 1
20 / 27
Polling em Vários Dispositivos 2
• Verificação de flags
– Prioridade implícita
– Normalmente atende apenas um periférico por polling
– Prioridade de atendimento ao menor número de periférico pode acontecer
starvation
21 / 27
Polling em Vários Dispositivos 3
• Solução para evitar starvation
– Leitura de mais de um periférico
– Esta solução pode causar muito atraso para a CPU
• Projetista decide em função de
– Número de periféricos
– Frequência estimada dos pedidos de atendimento
– Frequência de teste dentro do programa principal
• Existe alguma outra solução melhor?
22 / 27
Polling em Vários Dispositivos 3
• Existe alguma outra solução melhor?
1. Atendimento com fila. Quem foi atendido vai para o final da fila e tem
a última prioridade no próximo polling
– Analise vantagens e desvantagens
2. ...
3. Interjeição
23 / 27
INTERJEIÇÃO
24 / 27
Interjeição
• O que é?
– Otimização do polling
• Funcionalidade
– Ou lógico de todos os flags
• Consequência
– Menor tempo com o teste
• Procedimento
– CPU só testa um bit →
independentemente do número de
periféricos