Organização Básica de computadores e linguagem de...

76
Organização Básica de computadores e linguagem de montagem 1 o Semestre de 2014 Prof. Edson Borin

Transcript of Organização Básica de computadores e linguagem de...

Page 1: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Organização Básica de computadores e linguagem de

montagem

1o Semestre de 2014

Prof. Edson Borin

Page 2: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais
Page 3: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Barramentos

Page 4: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Barramentos

•  Caminhos de comunicação entre dois ou mais dispositivos

• Diversas linhas de comunicação que podem ser classificadas em:

– Linhas (ou barramento) de controle

– Linhas (ou barramento) de endereço

– Linhas (ou barramento) de dados

•  Exemplos de barramento

– PCI: desenvolvido originalmente pela Intel. Atualmente é um padrão público

– AMBA: desenvolvido pela ARM

Page 5: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Barramentos

CPU Memória E/S E/S

Linhas de dados Linhas de endereço Linhas de controle

Page 6: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Barramentos

•  Todos os dispositivos compartilham o mesmo barramento •  Problema: todos têm que operar na mesma velocidade

CPU Memória E/S E/S

Linhas de dados Linhas de endereço Linhas de controle

Page 7: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Barramentos Modernos

CPU Memória

Cache/Ponte

SCSI

Barramento Local Memória Principal

Barramento do Sistema

Barramento de alta velocidade

FireWire GPU Rede

Modem

Barramento de expansão

Interface de barramento de expansão Interface serial

Page 8: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Barramentos

•  Leitura recomendada: Capítulo 3.4 do livro do Stallings.

Page 9: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Entrada e Saída

Page 10: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Entrada e Saída

• Dispositivos de E/S (Entrada/Saída) ou I/O (Input/Output) permitem a entrada e saída de dados do processador.

• Ex: Teclado, Mouse, Monitor, Impressora, Placa de rede, disco rígido, unidade de CD-ROM.

• Como funciona?

Page 11: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Saída

42 CAPITULO 8. ORGANIZACAO DE COMPUTADORES MODERNOS

CPU

Memoria

E/S

E/S

...

E/S

Bar

ram

ento

Figura 8.1: Organizacao Geral de um Computador Moderno

8.1 A Memoria Principal

Diferente do computador IAS, a maioria dos computadores modernos foramprojetados para utilizarem memorias enderecadas a byte, onde cada enderecoda memoria esta associado a um byte, em vez de uma palavra de 40 bits. AFigura 8.2 ilustra a organizacao de uma memoria enderecada a byte. Nesteexemplo, o primeiro byte da memoria, associado ao endereco 0 (zero), contemo valor FF enquanto que o quarto byte da memoria, associado ao endereco 3,contem o valor 00.

Apesar da memoria ser enderecada a byte, o processador pode solicitar amemoria a leitura ou a escrita de uma palavra (4 bytes) ou meia palavra (2bytes). Nesses casos, a memoria le ou escreve os bytes em posicoes de memoriaconsecutivas a partir do endereco de memoria fornecido. Por exemplo, na Fi-gura 8.2, a operacao de leitura de uma palavra no endereco 0 retornaria o valor00 00 00 0F, o equivalente ao numero 15. Note que, neste exemplo, o byte 0F,lido do endereco 0, foi interpretado como sendo o ultimo byte do dado, ou seja,o byte menos significativo. Esta maneira de organizar uma palavra na memoriae conhecida como little-endian, e e utilizada por diversos processadores moder-nos, incluindo os processadores da famılia x86 e os processadores ARM. Namaneira oposta a esta, conhecida como big-endian, o byte menos significativodo dado e armazenado na maior posicao de memoria. Assim sendo, um proces-

A escrita de dados em um dispositivo de saída é feita através do barramento.

Page 12: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Saída •  Como o programa realiza uma saída?

Page 13: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Saída •  Como o programa realiza uma saída? •  Escreve em uma porta, que está associada a um dispositivo

de saída.

Page 14: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Saída •  Como o programa realiza uma saída? •  Escreve em uma porta, que está associada a um dispositivo

de saída.

•  2 opções comuns: – Instrução especial para saída. Ex:

out 0x10, r1!– Instrução de store em uma faixa de endereços reservada.

Ex: ldr !r0, =0x80000!str !r1, [r0]!

• Como o processador sabe se é uma saída ou acesso à memória?

Page 15: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Entrada

42 CAPITULO 8. ORGANIZACAO DE COMPUTADORES MODERNOS

CPU

Memoria

E/S

E/S

...

E/S

Bar

ram

ento

Figura 8.1: Organizacao Geral de um Computador Moderno

8.1 A Memoria Principal

Diferente do computador IAS, a maioria dos computadores modernos foramprojetados para utilizarem memorias enderecadas a byte, onde cada enderecoda memoria esta associado a um byte, em vez de uma palavra de 40 bits. AFigura 8.2 ilustra a organizacao de uma memoria enderecada a byte. Nesteexemplo, o primeiro byte da memoria, associado ao endereco 0 (zero), contemo valor FF enquanto que o quarto byte da memoria, associado ao endereco 3,contem o valor 00.

Apesar da memoria ser enderecada a byte, o processador pode solicitar amemoria a leitura ou a escrita de uma palavra (4 bytes) ou meia palavra (2bytes). Nesses casos, a memoria le ou escreve os bytes em posicoes de memoriaconsecutivas a partir do endereco de memoria fornecido. Por exemplo, na Fi-gura 8.2, a operacao de leitura de uma palavra no endereco 0 retornaria o valor00 00 00 0F, o equivalente ao numero 15. Note que, neste exemplo, o byte 0F,lido do endereco 0, foi interpretado como sendo o ultimo byte do dado, ou seja,o byte menos significativo. Esta maneira de organizar uma palavra na memoriae conhecida como little-endian, e e utilizada por diversos processadores moder-nos, incluindo os processadores da famılia x86 e os processadores ARM. Namaneira oposta a esta, conhecida como big-endian, o byte menos significativodo dado e armazenado na maior posicao de memoria. Assim sendo, um proces-

A leitura de dados de um dispositivo de entrada é feita através do barramento.

Page 16: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Entrada •  Como o programa realiza uma entrada? •  Lê de uma porta, que está associada a um dispositivo de

entrada.

•  2 opções comuns: – Instrução especial para entrada. Ex:

in r1, 0x10!– Instrução de load em uma faixa de endereços reservada.

Ex: ldr !r0, =0x80000!ldr !r1, [r0]!

• Como o processador sabe se é uma entrada ou acesso à memória?

Page 17: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Exemplos no ARM

• Entrada:!ldr !r0, =0x53FA0008!ldr !r1, [r0]! • Saída ldr !r0, =0x53FA0000!str !r1, [r0]!

Page 18: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Exemplo - Elevador

• Dois dispositivos. 1 de entrada e 1 de saída

•  Entrada: – sensor de andar. Conectado à porta 0x20. – quando acessado, responde com um byte indicando o

andar atual (de 0 a 9)

Page 19: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Exemplo - Elevador

•  Saída – mostrador digital: Conectado à porta 0x30 – dispositivo com 7 segmentos (a,b,...,g) e um ponto

luminoso que ficam ligados ou desligados de acordo com o dado no registrador de controle.

– a saída corresponde em escrever um byte no registrador de controle.

4 CAPÍTULO 5. ENTRADA E SAÍDA

elevador:

1 SENSOR_DATA equ 20h ; porta do sensor23 inb r0,SENSOR_DATA ; le valor do andar corrente

O mostrador é um dispositivo apenas de saída, com um único dígito, conforme aFigura 5.1 (a). Os segmentos do mostrador, mais o ponto decimal, podem ser indivi-dualmente ligados ou desligados. Cada segmento corresponde a um bit em um byte,mostrado na Figura 5.1 (b). O mostrador está conectado à porta 30h, chamada de portade dados do mostrador. A operação de escrita de um byte nessa porta controla quaissegmentos são acesos e quais são apagados. Se um determinado bit tem o valor 1, osegmento correspondente é aceso, caso contrário o segmento correspondente é apagado.Assim, por exemplo, se um byte com o valor 7eh for escrito na porta do mostrador, odígito ‘0’ será mostrado (apenas os segmentos p e g apagados) e se um byte com o valor30h for escrito na porta do mostrador o dígito ‘1’ será mostrado (apenas os segmentos b

e c ligados).

a

b

c

d

e

fg

p

bp gca e fd

6 0157 3 24

(a) (b)

Figura 5.1: Mostrador de sete segmentos (a) e os bits correspondentes no byte de controle(b).

Exercício 5.1 Escrever um procedimento que atualize o valor do mostrador do elevadorcom o valor lido do sensor.

Page 20: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Exemplo - Elevador

@ Procedimento atualiza andar!@ Lê o andar do sensor e atualiza o valor do mostrador!!

.equ !SENSOR_PORT, 0x20!

.equ !DISPLAY_PORT, 0x30!!

atualiza_andar:!!ldr !r1, =SENSOR_PORT!!ldrb !r1, [r1] ! !@ lê o valor do sensor!!ldr !r0, =tab_digitos !@ converte valor para!!ldrb !r0, [r0, r1] !@ byte de controle!!ldr !r1, =DISPLAY_PORT!@ escreve byte de controle!!strb !r0, [r1] ! !@ no mostrador!!mov !pc, lr!

!

tab_digitos: .byte 7e,30,6d,79,33,5b,5f,70,7f,7b!

Page 21: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Problemas com a abordagem anterior

•  Suponha que o elevador suba 8 andares.

• Quando devemos chamar o procedimento AtualizaAndar?

Page 22: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Outro Exemplo - Teclado

• Teclado: – Dispositivo de Entrada – Duas portas: dados (0x40) e estado (0x41) – Dado lido representa caractere!

• E se o teclado for apertado múltiplas vezes?

• Como saber se o dado que está lá já foi lido?

6 CAPÍTULO 5. ENTRADA E SAÍDA

1 2 3

4 5 6

7 8 9

* 0 #

Figura 5.2: Teclado simples

Bit Nome Estado0 READY Existe dado pronto, não lido ainda1 OVRN Houve atropelamento (dado perdido)

Tabela 5.1: Bits de estado do teclado.

Se o bit READY estiver ligado, significa que uma tecla foi pressionada e que seuvalor ainda não foi lido. Esse bit é automaticamente desligado quando é feita uma lei-tura na porta de dados do teclado. O bit OVRN indica uma condição de erro: se estiverligado significa que uma nova tecla foi pressionada sem que o valor da tecla pressionadaimediatemante antes tenha sido lido. Nesse caso, o valor da tecla pressionada imediata-mente antes é perdido, sendo sobre-escrito pelo valor da nova tecla.

5.2.1 Espera forçada

Podemos agora escrever um procedimento para ler o valor de uma tecla pressionada noteclado:

Page 23: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Outro Exemplo - Teclado

• Teclado: – um bit de estado indica se o dado atual não foi lido

pelo processador ainda (READY). Bit 0

– outro bit de estado indica se mais de um botão já foi apertado antes do processador ler o dado, ou seja, houve dado perdido (OVRN). Bit 1

6 CAPÍTULO 5. ENTRADA E SAÍDA

1 2 3

4 5 6

7 8 9

* 0 #

Figura 5.2: Teclado simples

Bit Nome Estado0 READY Existe dado pronto, não lido ainda1 OVRN Houve atropelamento (dado perdido)

Tabela 5.1: Bits de estado do teclado.

Se o bit READY estiver ligado, significa que uma tecla foi pressionada e que seuvalor ainda não foi lido. Esse bit é automaticamente desligado quando é feita uma lei-tura na porta de dados do teclado. O bit OVRN indica uma condição de erro: se estiverligado significa que uma nova tecla foi pressionada sem que o valor da tecla pressionadaimediatemante antes tenha sido lido. Nesse caso, o valor da tecla pressionada imediata-mente antes é perdido, sendo sobre-escrito pelo valor da nova tecla.

5.2.1 Espera forçada

Podemos agora escrever um procedimento para ler o valor de uma tecla pressionada noteclado:

Page 24: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Outro Exemplo - Teclado (Busy waiting)

•  Rotina le_tecla

•  Lê palavra de controle (end. 0x40) •  Se o dispositivo não tiver dado (bit 0 - READY)

– Tenta novamente (Busy waiting) •  Se o dispositivo tiver dado

– Verifica se houve perda de dado (bit 1 - OVRN) – Se houve perda de dado

• Trata o erro – Senão

• Lê dado do dispositivo (end. 0x41) e retorna

Page 25: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Outro Exemplo - Teclado (Busy waiting) @ Procedimento le tecla!@ Lê a o valor da tecla que foi pressionada!!

.equ !KB_DATA, 0x40!

.equ !KB_STAT, 0x41!

.equ !KB_READY, 0x01!

.equ !KB_OVRN, 0x02!!

le_tecla:!!ldr !r1, =KB_STAT!!ldrb !r1, [r1] ! @ lê o estado do teclado!!tst !r1, #KB_READY! @ testa se tem dado pronto!!beq !le_tecla ! @ se não tiver, tenta novamente!!tst !r1, #KB_OVRN ! @ perdeu dado?!!bne !lt_ovrn ! @ se sim, trata erro!!ldr !r1, =KB_DATA ! @ senão, lê dado!!ldrb !r0, [r1] ! @ no mostrador!!mov !pc, lr!

!

lt_ovrn: !@ trata erro aqui!

Page 26: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Problemas com a abordagem anterior

•  Suponha que o usuário demore para apertar algo.

• O que o processador faz?

Page 27: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Problemas com a abordagem anterior

•  Suponha que o usuário demore para apertar algo.

• O que o processador faz?

• Como melhorar?

– Verifique o teclado de tempos em tempos e faça algum trabalho útil no intervalo entre as verificações.

Page 28: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Problemas com a abordagem anterior

•  Suponha que o usuário demore para apertar algo.

• O que o processador faz?

• Como melhorar?

– Verifique o teclado de tempos em tempos e faça algum trabalho útil no intervalo entre as verificações.

• Ainda há o risco do usuário pressionar a tecla múltiplas vezes antes do programa verificar se alguma tecla foi pressionada.

• Talvez o usuário não seja tão rápido para causar este problema, mas e se for uma placa de rede.

Page 29: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Problemas com a abordagem anterior

•  Suponha que o usuário demore para apertar algo.

• O que o processador faz?

• Como melhorar?

– Verifique o teclado de tempos em tempos e faça algum trabalho útil no intervalo entre as verificações.

• Ainda há o risco do usuário pressionar a tecla múltiplas vezes antes do programa verificar se alguma tecla foi pressionada.

• Talvez o usuário não seja tão rápido para causar este problema, mas e se for uma placa de rede.

Interrupção: O dispositivo avisa o

processador quando acondecer

alguma coisa!

Page 30: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Interrupção

•  Iniciativa de comunicação é do periférico •  Exemplo:

– Quando o dado está disponível, o teclado “interrompe” o processador.

– O processador pára o que está fazendo para atender o teclado

– Após o processamento da leitura, o processador continua com o que estava fazendo.

Page 31: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Interrupção

• O processador pára o que está fazendo para atender o teclado.

• O que acontece com o programa que o processador estava executando???

Page 32: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Exemplo: Interrupção

@ programa faça algo útil 1000 vezes!!main:!

!mov r4, #1000!loop:!

!bl !algo_util!!sub !r4, r4, #1!!cmp !r4, #0!!bne!loop!!...!

Page 33: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Exemplo: Interrupção

@ programa faça algo útil 1000 vezes!!main:!

!mov r4, #1000!loop:!

!bl !algo_util!!sub !r4, r4, #1!!cmp !r4, #0!!bne!loop!!...!

Interrupção

Page 34: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Interrupção

• O processador pára o que está fazendo para atender o teclado.

• O que acontece com o programa que o processador estava executando??? – Antes de tratar a interrupção, é importante salvar todo

o “contexto” do programa que está executando • Registradores, • flags, • Manter a pilha consistente...

Page 35: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Exemplo: Interrupção

@ programa faça algo útil 1000 vezes!main:!

!mov r4, #1000!loop:!

!bl !algo_util!!sub !r4, r4, #1!!cmp !r4, #0!!bne !loop!!...!

!

trata_interrupcao:!!@ salva contexto!!@ trata a interrupção!!@ restaura o contexto!

!

Page 36: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Exemplo: Interrupção

@ programa faça algo útil 1000 vezes!main:!

!mov r4, #1000!loop:!

!bl !algo_util!!sub !r4, r4, #1!!cmp !r4, #0!!bne !loop!!...!

!

trata_interrupcao:!!@ salva contexto!!@ trata a interrupção!!@ restaura o contexto!

!

1 Interrupção acontece 1

Page 37: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Exemplo: Interrupção

@ programa faça algo útil 1000 vezes!main:!

!mov r4, #1000!loop:!

!bl !algo_util!!sub !r4, r4, #1!!cmp !r4, #0!!bne !loop!!...!

!

trata_interrupcao:!!@ salva contexto!!@ trata a interrupção!!@ restaura o contexto!

!

1

2

Interrupção acontece

Fluxo de controle é desviado

1

2

Page 38: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Exemplo: Interrupção

@ programa faça algo útil 1000 vezes!main:!

!mov r4, #1000!loop:!

!bl !algo_util!!sub !r4, r4, #1!!cmp !r4, #0!!bne !loop!!...!

!

trata_interrupcao:!!@ salva contexto!!@ trata a interrupção!!@ restaura o contexto!

!

1

2

Interrupção acontece

Fluxo de controle é desviado

A interrupção é tratada

1

2

3

3

Page 39: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Exemplo: Interrupção

@ programa faça algo útil 1000 vezes!main:!

!mov r4, #1000!loop:!

!bl !algo_util!!sub !r4, r4, #1!!cmp !r4, #0!!bne !loop!!...!

!

trata_interrupcao:!!@ salva contexto!!@ trata a interrupção!!@ restaura o contexto!

!

1

2

4

Interrupção acontece

Fluxo de controle é desviado

A interrupção é tratada

1

2

3

Contexto é recuperado 43

Page 40: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Interrupção

• Diversos dispositivos de E/S.

• Como chamar o tradador de interrupção correto?

Page 41: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Interrupção

• Diversos dispositivos de E/S.

• Como chamar o tradador de interrupção correto?

• Diversas opções:

– a) Um único tratador que verifica qual dispositivo interrompeu e chama o procedimento adequado.

– b) Múltiplos tratadores, um para cada dispositivo.

• Vetor de interrupções!

– Armazena o endereço das rotinas de tratamento.

Page 42: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Vetor de Interrupções

•  É um espaço de memória que contém o endereço ou o instruções das rotinas de tratamento de interrupções – Endereço: o processador carrega da memória o

endereço da rotina e desvia o fluxo de execução para o endereço carregado.

– Instruções: o processador desvia o fluxo de execução para o espaço que contém o código.

Page 43: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Vetor de Interrupções

• No ARM, o vetor de interrupções contém a instrução inicial de cada rotina.

•  Vetor inicia-se tipicamente no endereço 0x000

The ARM Instruction Set - ARM University Program - V1.0 10

* When an exception occurs, the core:• Copies CPSR into SPSR_<mode>• Sets appropriate CPSR bits

If core implements ARM Architecture 4T and is currently in Thumb state, then

ARM state is entered. Mode field bits Interrupt disable flags if appropriate.

• Maps in appropriate banked registers• Stores the “return address” in LR_<mode>• Sets PC to vector address

* To return, exception handler needs to:• Restore CPSR from SPSR_<mode>• Restore PC from LR_<mode>

Exception Handlingand the Vector Table

0x00000000

0x0000001C

0x00000018

0x00000014

0x00000010

0x0000000C

0x00000008

0x00000004

Reset

Undefined Instruction

FIQ

IRQ

Reserved

Data Abort

Prefetch Abort

Software Interrupt

Page 44: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Vetor de Interrupções

•  Só cabe 4 bytes, ou seja, 1 instrução. Logo a primeira intrução do tratador deve ser um salto para rotina que trata a interrupção.

• Opções: b ! !reset!ldr !pc, =reset!mov !pc, #0xEF000000!

Page 45: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Vetor de Interrupções

.org 0x000!b trata_reset!.org 0x18!b trata_IRQ!...!.org 0x20!trata_IRQ:!!@ salva contexto!!@ trata a interrupção!!@ restaura o contexto!

!!

Page 46: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Vetor de Interrupções – Salvando o contexto

• Como fazemos para salvar o contexto?

Page 47: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Vetor de Interrupções – Salvando o contexto

• Como fazemos para salvar o contexto? • O que acontece com o valor de PC do programa que

estava sendo executado? Perdemos o valor?

Page 48: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Vetor de Interrupções – Salvando o contexto

• Como fazemos para salvar o contexto? • O que acontece com o valor de PC do programa que

estava sendo executado? Perdemos o valor? – Resposta: o processador salva o valor de PC em um registrador LR especial, o LR_<mode>!

• Mode é o modo de operação. Existem 7 modos de operação: User, System, Supervisor, Abort, Undefined, Interrupt, Fast Interrupt.

Page 49: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Vetor de Interrupções – Salvando o contexto

• Como fazemos para salvar o contexto? • O que acontece com o valor de PC do programa que

estava sendo executado? Perdemos o valor? – Resposta: o processador salva o valor de PC em um

registrador LR especial, o LR_<mode>!

• Mode é o modo de operação. Existem 7 modos de operação: User, System, Supervisor, Abort, Undefined, Interrupt, Fast Interrupt. – O modo de operação é selecionado de acordo com a interrupção

Page 50: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Modos de operação •  Registradores visíveis nos diferentes modos de operação

The ARM Instruction Set - ARM University Program - V1.0 4

Register OrganisationGeneral registers and Program Counter

Program Status Registers

r15 (pc)r14 (lr)r13 (sp)

r14_svcr13_svc

r14_irqr13_irq

r14_abtr13_abt

r14_undefr13_undef

User32 / System FIQ32 Supervisor32 Abort32 IRQ32 Undefined32

cpsrsprsr_fiqsprsr_fiqsprsr_fiq spsr_abtspsr_svcsprsr_fiqsprsr_fiqspsr_fiq sprsr_fiqsprsr_fiqsprsr_fiqsprsr_fiqsprsr_fiqspsr_irq

r12

r10r11

r9r8r7

r4r5

r2r1r0

r3

r6r7

r4r5

r2r1r0

r3

r6

r12

r10r11

r9r8r7

r4r5

r2r1r0

r3

r6

r12

r10r11

r9r8r7

r4r5

r2r1r0

r3

r6

r12

r10r11

r9r8r7

r4r5

r2r1r0

r3

r6

r12

r10r11

r9r8r7

r4r5

r2r1r0

r3

r6

r15 (pc) r15 (pc) r15 (pc) r15 (pc) r15 (pc)

cpsrcpsrcpsrcpsrcpsr

r14_fiqr13_fiqr12_fiq

r10_fiqr11_fiq

r9_fiqr8_fiq

sprsr_fiqsprsr_fiqsprsr_fiqsprsr_fiqsprsr_fiqspsr_undef

Page 51: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Vetor de Interrupções – Salvando o contexto

Durante uma interrupção o processador:

1.  Copia o CPSR no registrador SPSR_<mode>!

2.  Seta os bits do CPSR que indicam o modo de operação

3.  Interrupções IRQ são desabilitadas automaticamente. Interrupções FIQ são desabilitadas somente se a interrupção for do tipo FIQ ou RESET

4.  O endereço de retorno é armazenado em LR_<mode>!

Page 52: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Interrupção/Exceção

The ARM Instruction Set - ARM University Program - V1.0 5

Register Example:User to FIQ Mode

spsr_fiqcpsr

r7

r4r5

r2r1r0

r3

r6

r15 (pc)r14_fiqr13_fiqr12_fiq

r10_fiqr11_fiq

r9_fiqr8_fiq

r14 (lr)r13 (sp)

r12

r10r11

r9r8

User mode CPSR copied to FIQ mode SPSR

cpsr

r15 (pc)r14 (lr)r13 (sp)

r12

r10r11

r9r8r7

r4r5

r2r1r0

r3

r6

r14_fiqr13_fiqr12_fiq

r10_fiqr11_fiq

r9_fiqr8_fiq

Return address calculated from User mode PC value and stored in FIQ mode LR

Registers in use Registers in use

EXCEPTION

User Mode FIQ Mode

spsr_fiq

Page 53: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Interrupção/Exceção

The ARM Instruction Set - ARM University Program - V1.0 7

The Program Status Registers(CPSR and SPSRs)

Copies of the ALU status flags (latched if theinstruction has the "S" bit set).

N = Negative result from ALU flag.Z = Zero result from ALU flag.C = ALU operation Carried outV = ALU operation oVerflowed

* Interrupt Disable bits.I = 1, disables the IRQ.F = 1, disables the FIQ.

* T Bit (Architecture v4T only)T = 0, Processor in ARM stateT = 1, Processor in Thumb state

* Condition Code Flags

ModeN Z C V

2831 8 4 0

I F T

* Mode BitsM[4:0] define the processor mode.

Page 54: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Vetor de Interrupções – Tratando RESET

• A interrupção de RESET não precisa salvar o contexto, afinal, foi uma operação de reset.

• No entanto, o tratador deve supor que a máquina acabou de ser ligada, e deve preparar o contexto para execução. – Configurar os vetores de exceção – Inicializar a MMU – Inicializar as pilhas e registradores. – Inicializar dispositivos de E/S críticos – Habilitar interrupções – Mudar o modo para execução de código do usuário.

Page 55: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Traps ���

ou���Interrupções por software

Page 56: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Traps / Interrupções por Software Papéis do sistema operacional: • Abstrair o funcionamento dos dispositivos de entrada e

saída. •  Proteger o sistema contra a execução de código

malicioso. • Gerenciar o acesso aos dispositivos. •  Etc...

Page 57: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Traps / Interrupções por Software •  Ex: Abstrair o funcionamento dos dispositivos de entrada

e saída. – Como escrever um dado em um arquivo no disco

rígido da Seagate, ou da Hitachi? – E se o arquivo estiver em um pen-drive?

Page 58: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Traps / Interrupções por Software •  Ex: Abstrair o funcionamento dos dispositivos de entrada

e saída. – Como escrever um dado em um arquivo no disco

rígido da Seagate, ou da Hitachi? – E se o arquivo estiver em um pen-drive?

• O sistema operacional provê uma interface bem definida para acessar arquivos e abstrai os detalhes de acesso ao dispositivo. – O driver do dispositivo cuida dos detalhes!

• O programa pode acessar o dispositivo diretamente? Sem o auxílio do sistema operacional???

Page 59: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Traps / Interrupções por Software

•  Ex: Proteger o sistema contra a execução de código malicioso. – O que acontece se um programa executar o seguinte

trecho de código:

trecho_malicioso:! mrs r0, CPSR! orr r0, r0, #0xC0! msr CPSR, r0!laco:! b laco!

Page 60: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Traps / Interrupções por Software

•  Precisamos de um meio de: 1) proteger o sistema de código malicioso! 2) permitir que o programa do usuário chame o sistema operacional para executar tarefas (E/S, etc...)

•  Proteger o sistema de código malicioso: – Restringir o código de usuário à execução de

instruções seguras. Não permitir a execução de instruções de entrada e saída, msr, e outras.

•  Para chamar o sistema operacional: – Podemos usar a instrução b (ou bl)?

Page 61: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Traps / Interrupções por Software

•  Vamos supor que nós restringimos o código do usuário.

– Se nós chamarmos uma rotina do SO com a instrução b, o SO conseguirá executar instruções que inibem interrupções, realizam entrada e saída ou outras instruções protegidas?

• Não

Page 62: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Traps / Interrupções por Software

•  Vamos supor que nós restringimos o código do usuário.

– Se nós chamarmos uma rotina do SO com a instrução b, o SO conseguirá executar instruções que inibem interrupções, realizam entrada e saída ou outras instruções protegidas?

• Não

•  Solução: 2 modos de execução

– Supervisor: todas as instruções estão disponíveis.

– Usuário: apenas instruções seguras estão disponíveis.

Page 63: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Traps / Interrupções por Software

• Como ir para o modo supervisor e chamar o SO ao mesmo tempo?

– Traps, ou interrupções por Software

• Uma interrupção por Software invoca uma função registrada no vetor de interrupções!

– Ajuda a garantir que apenas o SO executará no modo superusuário

• ARM:

– Instrução: svc #0!

Page 64: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Traps / Interrupções por Software

•  Processador começa (boot) no modo supervisor.

• O kernel do SO inicializa os vetores de interrupções, mapas de memória, etc.

•  SO prepara a pilha de cada modo de execução

•  SO inicia contexto do processo de usuário e muda para o modo usuário.

Page 65: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Traps / Interrupções por Software • O programa está executando

– Se o programa precisa chamar o sistema operacional, executa uma interrupção por Software

svc #0!– O processador gera uma interrupção, chamando o

tratador cadastrado no vetor de interrupções.

• Neste momento o processador entra no modo supervisor.

– O tratador do SO realiza a operação e retorna com movs pc, lr, trazendo a execução de volta para a aplicação no modo usuário e restaurando o CPSR!

Page 66: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Exceções

Page 67: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Exceções •  Interrupções:

– Eventos causados por dispositivos externos ao processador. •  Ex: dispositivo de entrada e saída.

– Estes eventos podem ocorrer a qualquer momento.

•  Exceções: – Eventos causados pelo próprio processador. – Causados durante a execução de instruções. – Somente sob certas circunstâncias!

• Ex: divisão por zero...

Page 68: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Exceções • Exemplos de exceções:

– Divisão por zero – Instrução inexistente – Acesso a região de memória protegida – Falta de página

• São eventos infrequentes: Exceções à regra!

Page 69: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Exemplo – Divisão por Zero • O resultado de uma divisão por zero é indefinido.

• Como o processador deve tratar a divisão por zero?

Page 70: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Exemplo – Divisão por Zero • O resultado de uma divisão por zero é indefinido.

• Como o processador deve tratar a divisão por zero?

– Resposta: deixe o software (programador) tratar.

Page 71: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Exemplo – Divisão por Zero • O resultado de uma divisão por zero é indefinido.

• Como o processador deve tratar a divisão por zero?

– Resposta: deixe o software (programador) tratar.

• Como?

Page 72: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Exemplo – Divisão por Zero • O resultado de uma divisão por zero é indefinido.

• Como o processador deve tratar a divisão por zero?

– Resposta: deixe o software (programador) tratar.

• Como?

– Opção 1: antes de dividir, compare o divisor com zero, se for igual, salte para uma rotina que trata a divisão por zero.

• OBS: este exemplo não se aplica ao ARM do simulador, que não possui instrução de divisão!

Page 73: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Exemplo – Divisão por Zero !!! ...! cmp r1, #0! beq trata_div_zero! div r2, r1! ...!! trata_div_zero:! ...!

(a) Verificar o divisor antes.

Page 74: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Exemplo – Divisão por Zero !!! ...! cmp r1, #0! beq trata_div_zero! div r2, r1! ...!! trata_div_zero:! ...!

(a) Verificar o divisor antes.

Não é efficiente verificar se o valor do divisor é zero toda vez que realizarmos uma

divisão.

Page 75: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Exemplo – Divisão por Zero !!! ...! cmp r1, #0! beq trata_div_zero! div r2, r1! ...!! trata_div_zero:! ...!

.org 0x...!b trata_div_zero!!...!cmp r1, 0!beq trata_div_zero!div r2, r1!...!!trata_div_zero:!...!

(b) Usar o mecanismo de Exceções. (a) Verificar o divisor antes.

Utilizamos o mecanismo de

exceções, similar ao de interrupções!

Page 76: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2014-1s/ab/slides/mc404_9... · Barramentos! • Caminhos de comunicação entre dois ou mais

Exceções • O tratamento de uma exceção é similar ao tratamento

de uma interrupção. – O processador salva parte do contexto – Desvia a execução para o tratador da exceção

• Tipicamente, o endereço do tratador é armazenado no vetor de interrupções.

– O tratador da exceção salva o restante do contexto – Após tratar a exceção, o tratador “pode” recuperar o

contexto e retornar ao programa ou abortar a execução do programa.