modos de transferência interrupção arquitetura de computadores ii prof. césar augusto m. marcon

30
Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

Upload: raissa-fartaria-bras

Post on 07-Apr-2016

221 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

Modos de Transferência

Interrupção

ARQUITETURA DE COMPUTADORES II

Prof. César Augusto M. Marcon

Page 2: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

2 / 28

Interrupção

• Vantagem– Evita tempo desperdiçado com múltiplos testes, que é inerente ao polling

• Funcionamento– CPU/controlador é avisado pelo periférico que este deseja transmitir/receber

dados• Principais características de interrupções de E/S

– Assincronismo em relação a qualquer instrução• Ocorre a qualquer instante

– Seu tratamento NÃO quebra a execução da instrução corrente• Teste de interrupção é feito depois da execução da instrução

– Diferenciar• Interrupção de hardware externo a CPU

– Origem de um periférico• Interrupção de hardware interno a CPU

– Origem de um circuito interno ao processador (exemplo: exceções divisão por zero)• Interrupção de software

– Chamadas ao sistema operacional ou outros programas residentes

Page 3: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

3 / 28

Interrupção – Procedimento ao Ocorrer Interrupção

1. Priorizar interrupções• Atender de maior prioridade no caso de simultaneidade de interrupções

2. Tratamento de interrupções aninhadas• Desabilitar interrupções, caso não seja permitido aninhamento de interrupções• Prosseguir normalmente, caso contrário

3. Salvar contexto (PC, registradores)• Salvamento rápido (um ciclo próprio processador)• Salvamento lento (diversos ciclos seqüência de instruções para por na pilha)

4. Identificar periférico5. Desviar PC para rotina de tratamento da interrupção6. Executar programa de interrupção7. Recuperar contexto8. Reabilitar interrupções (caso tenham sido desabilitadas)

Page 4: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

4 / 28

Interrupção - Exemplo: microcontrolador 8051 (Intel)

• Características– 4 pinos dedicados à

interrupção• INT0, INT1, TIMER0,

TIMER1– Interrupções pode ser

habilitada ou não por software• Exemplo

– Quando há pedido de interrupção no pino INT0, o PC é posto em uma pilha, e PC recebe valor 3

Page 5: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

5 / 28

TRATAMENTO DE INTERRUPÇÕES SIMULTÂNEAS

Interrupção associada a polling• Funcionamento

– Opera do mesmo modo que na interjeição• Ou lógico de todos os pedidos de interrupção é enviado ao

processador/controlador

• Vantagem– Menor número de pinos de E/S– Menor custo de hardware

• Conseqüência– Lento

• São feitos testes seqüenciais para atendimento dos periféricos

Page 6: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

6 / 28

Interrupção Daisy Chain (Serial)

O que é? Conexão em série dos dispositivos de E/S

Característica Primeiro a receber Int_Ack tem maior prioridade prioridade

implícita Funcionamento

1.Quando há pedido de interrupção, CPU aceita habilitando sinal Int_Ack

2.Primeiro dispositivo que tiver pedido de interrupção ativo, envia seu endereço para CPU

3.Desabilita demais periféricos (propagando PO com 0)

Page 7: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

7 / 28

Interrupção Paralela

• Característica– Vários periféricos podem solicitar

simultaneamente interrupções porém tem codificador de prioridade

• Organização do controlador de interrupção

Page 8: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

8 / 28

Exercícios

1. Explique as principais diferenças entre E/S programada e E/S não programada

2. Mostre o diagrama de um sistema de E/S por interrupção tipo Daisy-Chain. Explique-o

3. Compare polling, interjeição e interrupção em nível de hardware. Fale sobre vantagens e desvantagens

4. Faça a mesma comparação acima agora em nível de software. Mostre como seriam rotinas para tratamento dos métodos. Considere que existem 3 periféricos para serem verificados

Page 9: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

9 / 28

Interrupções no x86 (Intel)

1. Externas– Periféricos

• Teclado• Impressora• Placa comunicação, …

– Ativação• Através de pinos do µp

– INTR (interrupt request)– NMI (interrupção não mascarável)

– Exemplo de não mascarável• Falta de luz ou paridade em memória

2. Internas ao processador– Também denominadas exceções– Exemplo

• Divisão por 0

Page 10: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

10 / 28

Interrupções no x86 (Intel)

3. Interrupções de software (traps)• Não são verdadeiras interrupções são chamadas por software• Instrução típica

– INT xx• Exemplos

ASSEMBLY C

mov AH, 09Hmov DX, offset ‘alo mamãe$’int 21H

#include <dos.h>void main( void ){

union REGS pregs;struct SREGS sregs;char Message[20] = "alo mamãe";

pregs.h.ah = 0x09;sregs.ds = FP_SEG( Message );pregs.x.dx = FP_OFF( Message );intdosx( &pregs, &pregs, &sregs );

}

Page 11: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

11 / 28

• Todos os pinos de PORT0 a PORT2 podem ser usados como fontes de interrupções sensíveis a borda

• Vectored Interrupt Controller (VIC) que suporta 32 interrupções

• Real Time Clock (RTC) interrupt, Ethernet wake-up interrupt

• Possui uma série de registradores para manipular e controlar interrupções. Exemplos: VICVectAddr, VICVectPriority, VICIntEnable, RTC_ILR, T0MR0, T0MCR

Interrupções no LPC2378 (ARM7)

Page 12: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

12 / 28

void init_timer0(){

T0MR0 = cpuclock/1000-1; // 1msec = 12000-1 at 12.0 MHzT0MCR = 3; // Interrupt and Reset on MR0

T0TCR = 1; // Timer0 Enable VICVectAddr4 = (unsigned long)T0_IRQHandler; // Set Interrupt Vector VICVectCntl4 = 15; // use it for Timer0 Interrupt VICIntEnable = (1 << 4); // Enable Timer0 Interrupt }void T0_IRQHandler() __attribute__ (interrupt("IRQ")); // habilita interrupçãovoid T0_IRQHandler() {

/* Código da interrupção */

T0IR = 1; // Clear interrupt flag VICVectAddr = 0; // Acknowledge Interrupt}

Exemplo de Interrupções no LPC2378 (ARM7)

Page 13: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

13 / 28

Vetor de Interrupções no x86 (Intel)

• Mapa de memória– Primeiro 1k de memória, sendo reservado 4 bytes por interrupção

• 256 endereços para interrupções• Endereços apontam para função armazenada na BIOS

ou definida pelo programador– Endereços podem ser modificados, permitindo utilizar outro

programa para tratar a interrupção– BIOS Garante compatibilidade entre os diferentes computadores– Apesar do hardware ser diferente, a BIOS se encarrega de realizar a

interface entre software e máquina• Operação

– Quando computador é ligado, o IP é desviado para posição de memória FFF0 (16 posições abaixo de 1M)

– Inicia a rotina da BIOS– Em geral é efetuado o POST (Power-On Self Test), verificando-se

todo o hardware

Page 14: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

14 / 28

Tabela das InterrupçõesEndereço valor Significado Int de HW

Internas0000:0000 00H Divide by Zero Interrupt0000:0004 01H Single Step Interrupt0000:000C 03H Breakpoint0000:0010 04H Arithmetic Overflow Handler

Não mascarável0000:0008 02H Non-Maskable Interrupt

Mascaráveis0000:0028 0AH VGA Retrace (AT Slave) IRQ20000:002C 0BH Serial Port 2 IRQ30000:0030 0CH Serial Port 1 IRQ40000:0034 0DH Hard Disk IRQ50000:0038 0EH Floppy disk IRQ60000:003C 0FH Parallel Port IRQ70000:01C0 70H Real Time Clock IRQ80000:01C4 71H LAN Adapter IRQ90000:01C8 72H Reserved IRQ100000:01CC 73H Reserved IRQ110000:01D0 74H Mouse IRQ120000:01D4 75H 80287 NMI Error IRQ130000:01D8 76H Hard disk controller IRQ140000:01DC 77H Reserved IRQ15

Page 15: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

15 / 28

Procedimento do Tratamento de Interrupções

1. Periférico faz requisição ao controlador de interrupção, através das linhas IRQ– Se interrupção está habilitada, controlador enviará sinal ao processador

2. Controlador de interrupção repassa pedido de interrupção ao processador (INTR)3. Processador envia confirmação de aceite da interrupção (INTA)4. Controladora de interrupção repassa periférico5. Periférico coloca seu endereço/dados no barramento6. Endereço referencia posição de memória no vetor de interrupção (primeiro 1K de memória)

– Posição de memória aponta para endereço da rotina de tratamento de interrupção

Page 16: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

16 / 28

Controlador de Interrupção (PIC)• Registradores

– ISR: interrupção que está sendo atendida– IRR: periférico que está requerendo interrupção– IMR: máscara de interrupção

Page 17: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

17 / 28

Cascateamento de dois PICs

Page 18: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

18 / 28

• Acesso aos registradores– Endereços do Master: 20H e 21H– Endereços do Slave: A0H e A1H

• Leitura dos registradores– Na leitura de IRR e ISR primeiro é enviada uma palavra de controle.

Posteriormente, lê-se o estado da porta– Rotina de tratamento de interrupção deve avisar PIC que interrupção

terminou. Se a interrupção pertence ao Slave, avisar os 2 PICs. EOI = end of interruption

– Por default todas as interrupções estão habilitadas (iguais a zero). Pode-se ler ou escrever IMR para habilitar ou não as interrupções

Cascateamento de dois PICs

Page 19: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

19 / 28

Como Utilizar Interrupções• TECLADO

– Interceptar o teclado, por exemplo, para reconhecer hot-keys

#include <stdio.h>#include <dos.h>#define INTKEY 0x09int cont;void interrupt New_Key_Int(); /* interrupt prototype */void interrupt (*Old_teclado)(); /* interrupt function pointer */void interrupt New_Key_Int(){

cont++;printf("Tecla %d\n", cont);Old_teclado();

}int main(){

cont = 0;Old_teclado =_dos_getvect(INTKEY);_dos_setvect(INTKEY, New_Key_Int);for( ; cont < 10; )

; /* espera 10 teclas */_dos_setvect(INTKEY, Old_teclado);puts("OK");return 1;

}

Armazena endereço original da rotina de tratamento de interrupção de teclado

Ajusta novo endereço de rotina de tratamento de

interrupção

Recupera endereço armazenado

Page 20: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

20 / 28

Como Utilizar Interrupções• TECLADO

– Interceptar o control break

#include <stdio.h>#include <dos.h>

void interrupt get_out();void interrupt (*oldfunc)();

int looping = 1;void main(){

oldfunc = _dos_getvect(5);_dos_setvect(5,get_out);while (looping);_dos_setvect(5,oldfunc);

}

void interrupt get_out() {

looping = 0;}

Page 21: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

21 / 28

Mascaramento de Interrupções

#include <stdio.h>#include <dos.h>

#define MASTER 0x20#define SLAVE 0xA0#define MASK 0x01

int main(){

int iIRQ = 14, iPort; iPort = ( iIRQ <= 7 ) ? MASTER : SLAVE ; iPort += MASK; /* select masking port */

iIRQ &= 0x0007; printf("porta %d \n", inp( iPort ) ); outp( iPort, inp( iPort ) | ( 1 << iIRQ ) ); // pega o estado atual e seta o bit (iIRQs deslocamentos a esquerda)

}

Page 22: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

22 / 28

Exercícios Extras

1. Como funciona o mecanismo de mascaramento de interrupções? O que significa interrupção não mascarável? Dê um exemplo de aplicação

2. Como é realizado o mecanismo de tratamento de interrupção em um microprocessador? Cite as principais etapas do processo, comparando com o tratamento a atendimento de chamada à sub-rotina

3. Mostre como é feito o tratamento de interrupções de hardware nos computadores baseados em microprocessadores 80x86

4. Dado um programa que trata uma comunicação através de interrupção, pede-se:– O que pode acontecer se o programa foi escrito sem análise de poder ser interrompido

em qualquer trecho?– Mostre como poderia ser impedida a interrupção de entrar em qualquer ponto do código– Qual o mecanismo adotado em hardware para que o procedimento acima seja

atendido?– Mostre como poderiam ser implementadas rotinas de leitura e escrita serial através de

interrupção que não necessite de trechos de código atômicos. A explicação deve salientar os buffers e ponteiros

Page 23: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

23 / 28

Exercícios Extras

5. Comparar qual modo de comunicação tem melhor resultado para o problema descrito a seguir. A comparação deve elucidar problemas de complexidade de elaboração do programa, tratamento e verificação de erros e tempo de processamento– A execução do programa é efetuada em laços que requerem em média 2.100 ciclos,

não considerando trechos de código necessários para teste de polling ou interjeição– Existem 4 periféricos que devem ser avaliados– Considere que o teste de polling é efetuado duas vezes a cada laço de programa– Os testes para verificar se algum dispositivo deseja se comunicar, seja por polling ou

interjeição, consome 20 ciclos– As rotinas de execução do polling consomem 80 ciclos quando o teste de polling retorna

verdadeiro– A rotina de interjeição, para verificar qual dispositivo deseja se comunicar, consome

200 ciclos– O tratamento da rotina de interrupção consome para qualquer dispositivo 800 ciclos, em

média– Devido às características do programa são necessários 30 pontos atômicos no código.

Ou seja, devem ser inseridas funções que impossibilitem a entrada de interrupção em 30 pontos do programa

– As rotinas que mantém o código atômico consomem 50 ciclos

6. Altere os dados do programa acima de forma a obter melhores resultados para os dois outros métodos com relação ao tempo de processamento

Page 24: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

24 / 28

Exercícios

7. (ENADE 2005) Processadores atuais incluem mecanismos para o tratamento de situações especiais, conhecidas como interrupções. Em uma interrupção, o fluxo normal de instruções é interrompido para que a causa da interrupção seja tratada. Com relação a esse assunto, assinale a opção correta:a. Controladores de entrada e saída geram interrupções de forma síncrona à execução

do processador, para que nenhuma instrução fique incompleta devido à ocorrência da interrupção

b. Quando uma interrupção ocorre, o próprio processador salva todo o seu contexto atual, tais como registradores de dados e endereço e códigos de condição, para que esse mesmo contexto possa ser restaurado pela rotina de atendimento da interrupção

c. O processador pode auto-interromper-se para tratar exceções de execução, tais como um erro em uma operação aritmética, uma tentativa de execução de instrução ilegal ou uma falha de página em memória virtual

d. Rotinas de tratamento de interrupção devem ser executadas com o mecanismo de interrupção inibido, pois esse tipo de rotina não permite aninhamento

e. O uso de interrupção para realizar entrada ou saída de dados somente é eficiente quando o periférico trata grandes quantidades de dados, como é o caso de discos magnéticos e discos ópticos. Para periféricos com pouco volume de dados, como teclados e mouses, o uso de interrupção é ineficiente

Page 25: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

25 / 28

Exercícios

7. Comentários sobre a questão (ENADE 2005):a. Controladores de entrada e saída geram interrupções de forma síncrona à execução do

processador, para que nenhuma instrução fique incompleta devido à ocorrência da interrupção Resposta errada, pois não há sincronismo. Os sistemas (controlador e processador) são essencialmente assíncronos

b. Quando uma interrupção ocorre, o próprio processador salva todo o seu contexto atual, tais como registradores de dados e endereço e códigos de condição, para que esse mesmo contexto possa ser restaurado pela rotina de atendimento da interrupção Resposta dúbia. O processador pode salvar o contexto, ou o contexto pode ser salvo em pilha, dependendo do tipo de mecanismo implementado. A recuperação do contexto pode ser feita ao término do rotina de atendimento de interrupção, com recuperação da pilha ou após retornar desta, de forma automática pelo próprio processador

c. O processador pode auto-interromper-se para tratar exceções de execução, tais como um erro em uma operação aritmética, uma tentativa de execução de instrução ilegal ou uma falha de página em memória virtual Resposta certa. Este mecanismo é implementado em quase a totalidade dos processadores comerciais

d. Rotinas de tratamento de interrupção devem ser executadas com o mecanismo de interrupção inibido, pois esse tipo de rotina não permite aninhamento Resposta errada. O erro ocorre principalmente devido a palavra devem. Dependendo da arquitetura do processador não é permitido o aninhamento de interrupções. Este é o caso típico de tratamento de interrupções rápidas que somente tem um banco de registradores espelho. Porém, muitos processadores permitem aninhamento de ints

e. O uso de interrupção para realizar entrada ou saída de dados somente é eficiente quando o periférico trata grandes quantidades de dados, como é o caso de discos magnéticos e discos ópticos. Para periféricos com pouco volume de dados, como teclados e mouses, o uso de interrupção é ineficiente Resposta errada. O que pode ser considerado errada é dizer que int é somente eficiente se tratar de transferência com grande quantidade de dados. Além do mais, depende do que vem a ser a definição de eficiência. No contexto desta questão, a eficiência tem a ver apenas com a velocidade de execução do programa. Aqui não são levadas em consideração questões como código necessário, consumo de energia, etc...

Page 26: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

26 / 28

Exercícios Extras

8. Dado o projeto de um sistema embarcado, cujo acesso do processador ao dispositivo de entrada/saída seja controlado por interrupção. Considere que o tratamento da rotina de interrupção consuma em média 100 instruções para um processador com CPI média 1.5 e freqüência de operação 100 MHZ. Para uma comunicação assíncrona P82 (paridade par, 8 bits de dados e dois stop bit além do start bit), com 144.000 bps e uma UART com um registrador de buffer e um de deslocamento, calcule:– Qual a taxa máxima de transmissão ideal?– Qual a taxa efetiva de transmissão?– Qual o tempo necessário para transmitir 100 Kbytes para cada caso acima?– Faça um esboço para ilustrar os instantes de tempo onde ocorre transmissão do dado, a

comunicação CPU com dispositivo de E/S, e o tempo em que o processador está em atividades interrupção

Page 27: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

27 / 28

Exercícios Extras

Resposta (5):Acesso (interrupção)Retorno da interrupção = 100 instruçõesCPI média = 1,5Freqüência = 100 MHzTempo da interrupção = 100 * 1.5 * 1/100MHz = 1,5 µsTaxa = 144.000 bps (bits por segundo)UART = 1 buffer + 1 shift registerQuantidade = 100 Kbytes (KB)A) Taxa efetiva

B) Tempo (100 B * 1024) / 12.000 Bps = 8,5 seg

C) Ganho8,5 seg 100%1024 seg XX = 120 vezes

83,33µs

1,5µs(preenche o buffer)

Page 28: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

28 / 28

Exercícios

9. (Igual ao exercício 8, mas com polling) Dado o projeto de um sistema embarcado, cujo processador acessa um dispositivo de entrada/saída por polling a uma taxa média de 1 acesso a cada 20 ms. Considerando uma comunicação assíncrona P82 (paridade par, 8 bits de dados e dois stop bit além do start bit), com 144.000 bps e uma UART com um registrador de buffer e um de deslocamento, calcule:– Qual a taxa máxima de transmissão ideal (não deve ser considerado o tempo

de polling do processador)?– Qual a taxa efetiva de transmissão?– Qual o tempo necessário para transmitir 100 Kbytes para cada caso acima?– Faça um esboço para ilustrar os instantes de tempo onde ocorre transmissão

do dado, a comunicação CPU com dispositivo de E/S, e o tempo em que o processador está em atividades entre polling

Page 29: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

29 / 28

ExercíciosRESPOSTA (9):

Acesso (polling) = 1/20 msDados (8 bits)Comunicação = P82

STT – Start BitP - ParidadeSTP – Stop Bit

Taxa = 144.000 bps (bits por segundo)UART = 1 buffer + 1 shift registerQuantidade = 100 Kbytes (KB)

A) Taxa máxima = 144.000 bps / 12 b = 12.000 Bps (bytes por segundo)Tempo = (100 B * 1024) / 12.000 Bps = 8,5 seg...

B) Taxa efetiva

C) Taxa efetiva = 2 B / 20 ms = 1 B / 10 ms = 100 B/seg (desconsiderando o tempo de comunicação da CPU com dispositivos de E/S).

Tempo = (100 B * 1024) / 100 Bps = 1024 seg

...

1/12.000= 83,33µs

20 ms

...Comunicação CPU dispositivo

de E/S (não fornecido)

STT P STP STP

Dados (8 bits)

Page 30: Modos de Transferência Interrupção ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon

30 / 28

Exercícios Extras

10. Calcule qual o limite máximo de velocidade serial para o acesso ao dispositivo de E/S não leve a comunicação a ter momentos de ociosidade. Faça isto tanto para o acesso com polling (exercício 9) como para o acesso com interrupção (exercício 8) RESPOSTAA) Com acesso a polling

Tempo de polling = 20 msNúmero de bytes transmitido = 2Velocidade máxima = 2 B / 20ms = 100 B/s Pra protocolo N82100 B/s 8 bitsX 12 bitsX = 150 b/s

B) Acesso com interrupçãoTempo de tratamento de interrupção = 1,5 µsA cada interrupção insere um byteTaxa = 1 B / 1,5 µs = 0,67 MB/s0,67 MB/s 8 bitsX 12 bitsX = 1 Mb/s