Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU...

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

Transcript of Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU...

Page 1: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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

montagem

2o Semestre de 2016

Prof. Edson Borin

Page 2: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Barramentos

Page 3: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 4: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Barramentos

CPU Memória E/S E/S

Linhas de dadosLinhas de endereçoLinhas de controle

Page 5: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 dadosLinhas de endereçoLinhas de controle

Page 6: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Barramentos Modernos

CPUMemó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 7: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Barramentos

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

Page 8: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Entrada e Saída

Page 9: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 10: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 11: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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

Page 12: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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

de saída.

Page 13: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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, =0x80000str r1, [r0]

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

Page 14: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 15: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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, =0x80000ldr r1, [r0]

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

Page 16: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Exemplos no ARM

• Entrada:ldr r0, =0x53FA0008ldr r1, [r0]

• Saídaldr r0, =0x53FA0000str r1, [r0]

Page 17: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Exemplo - Elevador

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

•  Entrada:– sensor de andar. Conectado a uma

porta mapeada no endereço 0x30.– quando acessado, responde com

um byte indicando o andar atual (de 0 a 9)

CPU

Main Memory

Data (0x30)

Level Sensor

Page 18: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Exemplo - Elevador

•  Saída– mostrador digital: Conectado à

porta no endereço 0x40– 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.

CPU

Main Memory

Data (0x30)

Level Sensor

Control (0x40)

Level Display

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.

segments

dot

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 19: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Exemplo - Elevador

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

.equ SENSOR_PORT, 0x30

.equ DISPLAY_PORT, 0x40

atualiza_andar:ldr r1, =SENSOR_PORTldrb r1, [r1] @ lê o valor do sensorldr r0, =tab_digitos @ converte valor paraldrb r0, [r0, r1] @ byte de controleldr r1, =DISPLAY_PORT @ escreve byte de controlestrb r0, [r1] @ no mostradormov pc, lr

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

Page 20: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Problemas com a abordagem anterior

•  Suponha que o elevador suba 8 andares.

• Quando devemos chamar o procedimento AtualizaAndar?

Page 21: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Outro Exemplo - Teclado

• Teclado:– Dispositivo de Entrada– Duas portas: dados (0x50) e de estado

(0x51)– Dado lido representa caractere

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

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

CPU

Main Memory

1 2 3

4 5 6

7 8 9

* 0 #

Data (0x50)

Keyboard

Status (0x51)

Page 22: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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

CPU

Main Memory

1 2 3

4 5 6

7 8 9

* 0 #

Data (0x50)

Keyboard

Status (0x51)

Page 23: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Outro Exemplo - Teclado (Busy waiting)

•  Rotina le_tecla

•  Lê palavra de estado (end. 0x51)•  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. 0x50) e retorna

Page 24: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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_STATldrb r1, [r1] @ lê o estado do tecladotst r1, #KB_READY @ testa se tem dado prontobeq le_tecla @ se não tiver, tenta novamentetst r1, #KB_OVRN @ perdeu dado?bne lt_ovrn @ se sim, trata erroldr r1, =KB_DATA @ senão, lê dadoldrb r0, [r1] @ no mostradormov pc, lr

lt_ovrn: @ trata erro aqui

Page 25: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Problemas com a abordagem anterior

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

• O que o processador faz?

Page 26: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 27: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 28: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 acontecer

alguma coisa!

Page 29: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 30: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 31: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Exemplo: Interrupção

@ programa faça algo útil 1000 vezes

main:mov r4, #1000

loop:bl algo_utilsub r4, r4, #1cmp r4, #0bne loop...

Page 32: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Exemplo: Interrupção

@ programa faça algo útil 1000 vezes

main:mov r4, #1000

loop:bl algo_utilsub r4, r4, #1cmp r4, #0bne loop...

Interrupção

Page 33: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 34: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Exemplo: Interrupção

@ programa faça algo útil 1000 vezesmain:

mov r4, #1000loop:

bl algo_utilsub r4, r4, #1cmp r4, #0bne loop...

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

Page 35: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Exemplo: Interrupção

@ programa faça algo útil 1000 vezesmain:

mov r4, #1000loop:

bl algo_utilsub r4, r4, #1cmp r4, #0bne loop...

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

1 Interrupção acontece1

Page 36: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Exemplo: Interrupção

@ programa faça algo útil 1000 vezesmain:

mov r4, #1000loop:

bl algo_utilsub r4, r4, #1cmp r4, #0bne loop...

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

1

2

Interrupção acontece

Fluxo de controle é desviado

1

2

Page 37: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Exemplo: Interrupção

@ programa faça algo útil 1000 vezesmain:

mov r4, #1000loop:

bl algo_utilsub r4, r4, #1cmp r4, #0bne 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 38: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Exemplo: Interrupção

@ programa faça algo útil 1000 vezesmain:

mov r4, #1000loop:

bl algo_utilsub r4, r4, #1cmp r4, #0bne 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 é recuperado43

Page 39: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Interrupção

• Diversos dispositivos de E/S.

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

Barr

amen

to

ARMv7 Cortex A8Core

CP15

MMU

ROM

DDR

iRAM

TZIC

GPT

UART

eSDHC

GPIO

SD Card

Page 40: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 41: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Vetor de Interrupções

•  É um espaço de memória que contém o endereço ou 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 42: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 43: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 resetldr pc, =resetmov pc, #0xEF000000

Page 44: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Vetor de Interrupções

.org 0x000b trata_reset.org 0x18b trata_IRQ....org 0x20trata_IRQ:

@ salva contexto@ trata a interrupção@ restaura o contexto

Page 45: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Vetor de Interrupções – Salvando o contexto

• Como fazemos para salvar o contexto?

Page 46: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 47: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 48: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 49: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 50: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 51: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 52: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 53: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 54: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Traps ���

ou���Interrupções por software

Page 55: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Traps / Interrupções por SoftwarePapé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 56: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 57: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 58: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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, r0laco: b laco

Page 59: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 60: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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?

Page 61: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

Exceções

Page 67: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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

– Divisão por zero– Execução de instrução inexistente– Acesso a regiões de memória protegidas– 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/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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 é eficiente 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/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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, 0beq trata_div_zerodiv 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/... · CPU Memória Cache/Ponte SCSI Barramento Local Memória Principal Barramento do Sistema

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.