Introdução Modos Bloqueado, Polling e Interjeição...Modos de Transferência Introdução Modos...

Post on 28-Aug-2021

3 views 0 download

Transcript of Introdução Modos Bloqueado, Polling e Interjeição...Modos de Transferência Introdução Modos...

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