Microprocessadores e Microcontroladores

Propaganda
Microprocessadores e
Microcontroladores
Walter Fetter Lages
[email protected]
Universidade Federal do Rio Grande do Sul
Escola de Engenharia
Departamento de Engenharia Elétrica
Programa de Pós-Graduação em Engenharia Elétrica
ELE00002 Sistemas de Automação
Copyright (c) Walter Fetter Lages – p.1
Instrumento Inteligente
Copyright (c) Walter Fetter Lages – p.2
Instrumento Inteligente
•
•
Hardware
• Processador
• Memória
• Dispositivos de I/O
• Interfaces com sensores e/ou atuadores
Software
• Sistema de tempo-real
• Comunicação (protocolos)
• Driver para os dispositios
• Registradores de configuração
• Blocos funcionais
Copyright (c) Walter Fetter Lages – p.3
Sistema Microprocessado
Copyright (c) Walter Fetter Lages – p.4
Sinalização no Barraemnto
Copyright (c) Walter Fetter Lages – p.5
Unidade de Execução
Copyright (c) Walter Fetter Lages – p.6
Diagrama Funcional
Copyright (c) Walter Fetter Lages – p.7
Registradores (8086/8088)
•
•
Registradores de 8 bits
• AL, AH, BL, BH, CL, CH, DL, DH
Registradores de 16 bits
• AX=AH:AL
• BX=BH:BL
• CX=CH:CL
• DX=DH:DL
• SI, DI, BP
• SP
• IP
• Flags
• CS, DS, SS, ES
Copyright (c) Walter Fetter Lages – p.8
Registradores de Uso Específico
•
•
•
•
•
•
•
Ponteiro de instruções: IP
Ponteiro de pilha: SP
Flags
Segmento de código: CS
Segmento de dados: DS
Segmento de pilha: SS
Segmento extra: ES
Copyright (c) Walter Fetter Lages – p.9
Personalidade dos Registradores
•
•
Quase todas as instruções do 8086/8088 são
simétricas em relação aos registradores
Alguns registradores possuem usos preferenciais
• Acumulador: AL ou AX
• Base: BL, BX ou BP
• Contador: CL ou CX
• Dados: DL ou DX
• Índice de fonte: SI
• Índice de destino: DI
Copyright (c) Walter Fetter Lages – p.10
Flags
•
•
•
•
•
•
•
•
•
Carry: CF
Paridade: PF
Carry Auxiliar: AF
Zero: ZF
Sinal: SF
Trap: TF
Interrupção: IF
Direção: DF
Overflow: OF
Copyright (c) Walter Fetter Lages – p.11
Registradores de Segmento
•
•
Dependendo do tipo de acesso à memória é
utilizado um registrador de segmento
• CS: busca de instruções
• DS: acesso à dados na memória
• SS: acesso à pilha
• endereçamento indireto por SP ou BP
• ES: destino de operações de string
As instruções podem utilizar um prefixo para
utilizar um segmento diferente do default
Copyright (c) Walter Fetter Lages – p.12
Organização da Memória
•
•
A família x86 é little-endian
A família 68K é big-endian
Copyright (c) Walter Fetter Lages – p.13
Memórias
ROM Read-Only Memory
ROM
PROM Programmable ROM
EPROM Ereasable PROM
EEPROM Electrically Ereasable PROM
Flash-EEPROM
RAM Random Access Memory
SRAM Static RAM
Async SRAM
Sync SRAM
PB SRAM Pipelined Burst SRAM
DRAM Dynamic RAM
Copyright (c) Walter Fetter Lages – p.14
DRAM
DRAM Dynamic RAM
DRAM
F(E)PM RAM Fast (Enhanced) Page-mode
RAM
EDO RAM Extended Data Output RAM
BEDO RAM Burst Extended Data Output RAM
SDRAM Synchronous DRAM
DDR SDRAM Double Data Rate SDRAM
VRAM Video RAM
Copyright (c) Walter Fetter Lages – p.15
SRAM x DRAM
•
•
SRAM
• Célula básica = flip-flop
• Alta velocidade
• Baixa densidade, alto custo
• Alto consumo
DRAM
• Célula básica = capacitor
• Baixa velocidade
• Alta densidade, baixo custo
• Baixo consumo
• Necessita refresh
Copyright (c) Walter Fetter Lages – p.16
Processadores de 32 bits
•
•
•
•
•
•
•
•
80386DX, 80386SX
80486DX, 80486SX, 80486DX2, 80486DX4
Intel Pentium, Pentium-MMX
Intel Pentium Pro, Pentium II, Celeron
Intel Pentium III, Celeron
Intel Pentium 4, Pentium 4 D, Celeron
Core Duo, Centrino
Intel Core 2 Duo, Core 2 Quad
• EMT64, x86 64
• EMT64 6= IA64
Copyright (c) Walter Fetter Lages – p.17
Processadores de 32 bits
•
•
•
•
•
•
•
•
AMD 5x86, K5, 6x86
AMD K6, K6II, K6III
AMD Athlon, Duron
Athlon XP, Semprom, Turion
AMD Athlon 64, Turion 64
• AMD64, x86 64
• AMD64 ≈ EMT64
AMD Athlon 64 X2, Turion 64 X2
• AMD64, x86 64
Transmeta Crusoé
Cyrix 5x86, M1
Copyright (c) Walter Fetter Lages – p.18
Diagrama de Blocos DX4
Copyright (c) Walter Fetter Lages – p.19
Ciclo de Leitura Externa DX4
Copyright (c) Walter Fetter Lages – p.20
Modos de Operação
•
•
•
Modo protegido
• Modo virtual 86
• Emulação do modo real por uma tarefa de
modo protegido
Modo real
• Modo original do 8086
• Modo default
Modo de gerenciamento de sistema
• Introduzido com o 80386SL
• Utilizado para função de economia de energia
• Endereçamento similar ao modo real
Copyright (c) Walter Fetter Lages – p.21
Níveis de Privilégio
Copyright (c) Walter Fetter Lages – p.22
Verificação de Privilégios
Copyright (c) Walter Fetter Lages – p.23
Ambiente de Execução Básico
Copyright (c) Walter Fetter Lages – p.24
Registradores de Uso Geral
Copyright (c) Walter Fetter Lages – p.25
Registradores de Segmento
Copyright (c) Walter Fetter Lages – p.26
Flags
Copyright (c) Walter Fetter Lages – p.27
Ambiente de Sistema
Copyright (c) Walter Fetter Lages – p.28
Registradores de Controle
Copyright (c) Walter Fetter Lages – p.29
Registradores de Controle
PG: Paging
CD: Cache disable
NW: Not write-through
AM: Aligment mask
WP: Write protect
NE: Numeric error
ET: Extension type
TS: Task switched
EM: Emulation
MP: Monitor coprocessor
PE: Protection enable
Copyright (c) Walter Fetter Lages – p.30
Registradores de Controle
PCD: Page-level cache disable
PWT: Page-leve write-through
VME: Virtual-8086 mode extensions
PVI: Protected-mode virtual interrupts
TSD: Time stamp disable
DE: Debugging extensions
PSE: Page size extensions
PAE: Physical address extension
MCE: Machine-check enable
PGE: Page global enale
PCE: Performance-monitoring conter enable
Copyright (c) Walter Fetter Lages – p.31
Utilização da memória
•
•
•
Alocação e desalocação de memória
• Estática
• Dinâmica
Memória virtual
Segmentação de memória
Copyright (c) Walter Fetter Lages – p.32
Sistemas Monotarefa
•
•
Um único programa na memória
• O programa utiliza toda a memória
• O programa deve ter todos os drivers de I/O
Divisão da memória entre o programa e o sistema
operacional
Copyright (c) Walter Fetter Lages – p.33
Sistemas Multitarefa
•
Partições fixas
• Partições definidas manualmente pelo
operador
• Uma partição de tamanho suficiente é alocada
para cada tarefa
• Em geral, o número de tarefas > número de
partições =>diversas politicas para utilização
das partições
• Uma fila de tarefas para cada partição
• Uma fila única
• Fila única com best-fit
• Fila única com best-fit e máximo de
skip-over
Copyright (c) Walter Fetter Lages – p.34
Partições Fixas
Copyright (c) Walter Fetter Lages – p.35
Partições Variáveis
•
•
•
•
O tamanho das partições varia conforme a
criação/destruição das tarefas
Fragmentação de memória
Compactação de memória
• Consome muito tempo -> normalmente feito
durante a alocação/desalocação de memória
em sistemas não tempo real
Espaço para a memória das tarefas crescer
• Alocação dinâmica de memória para dados
Copyright (c) Walter Fetter Lages – p.36
Lay-out de Memória das Tarefas
Copyright (c) Walter Fetter Lages – p.37
Relocação
•
Em sistemas multitarefa, cada tarefa terá um
endereço inicial diferente. Como o
programador/compilador/linker saberá o
endereço inicial (e endereços de subrotinas,
dados, etc...) da tarefa?
• Problema da relocação
• Gerar apenas código com endereços relativos
• Código relocável
• Relocação durante a carga da tarefa na
memória
Copyright (c) Walter Fetter Lages – p.38
Segmentação
•
•
•
•
•
Associa-se a cada área de memória um valor de
base e um valor de limite
base=endereço inicial
limite=endereço máximo ou tamanho
Todas as tarefas são codificadas assumindo que a
sua área de memória começa em 0
Quando a tarefa é selecionada para executar, base
e limite são carregados pelo sistema operacional
em registradores especiais na CPU
Copyright (c) Walter Fetter Lages – p.39
Segmentação
•
•
Endereço físico = offset + base
• Soma feita por hardware a cada acesso à
memória
Endereços são verificados quanto ao limite
• Uma tarefa não pode acessar a área das outras
Copyright (c) Walter Fetter Lages – p.40
Exemplo
•
•
•
•
•
64kB de memória total
Programa 1
• Tamanho de 16kB
• Carregado no endereço físico 1000h
Programa 2
• Tamanho de 32kB
• Carregado no endereço físico 6000h
Ambos acessam o endereço lógico 3000h
Tabela de segmentos no endereço físico 0400h
Copyright (c) Walter Fetter Lages – p.41
Segmentação
•
•
•
•
O seletor e descritor de segmento são controlados
pelo sistema operacional
O offset é controlado pelo programa de aplicação
Proteção
• Usualmente o descritor de segmento tem
algums bits associados que são utilizados para
determinar as características de proteção do
segmento
• Permissões de leitura, escrita, execução
Cache de descritor de segmento
• Evita dois acessos a memória
• Alterado apenas quando o registrador de
seletor de segmento é alterado
Copyright (c) Walter Fetter Lages – p.42
Modelo Flat
Copyright (c) Walter Fetter Lages – p.43
Modelo Flat Protegido
Copyright (c) Walter Fetter Lages – p.44
Multi-segmentos
Copyright (c) Walter Fetter Lages – p.45
Segmentação na IA32
•
•
Local Descriptor Table (LDT)
Global Descriptor Table (GDT)
Copyright (c) Walter Fetter Lages – p.46
GDT e LDT
Copyright (c) Walter Fetter Lages – p.47
Segmentação na IA32
Copyright (c) Walter Fetter Lages – p.48
Seletor de Segmento na IA32
Copyright (c) Walter Fetter Lages – p.49
Descritor de Segmento
Copyright (c) Walter Fetter Lages – p.50
Segmentação no 8086/8088
•
•
•
Processadores sem modo protegido
Sem proteção, não tem sentido a existência de
permissões e limite no segmento
• O descritor de segmento resume-se à base
• Como os registradores são de 16 bits
decidiu-se limitar o início de segmentos
apenas alinhados com "parágrafos"
Segmentação mal implementada
• O "tamanho máximo"do segmento é 64KB
• O limite do segmento não é garantido
• Na verdade é apenas um esquema para
endereçar 1MB utilizando 2 registradores
Copyright (c) Walter Fetter Lages – p.51
Segmentação no 8086/8088
•
•
Endereço físico=reg. de segmento * 16 + offset
Endereço físico=reg. de segmento « 4 + offset
Copyright (c) Walter Fetter Lages – p.52
Memória Virtual
•
•
Paginação
• Falta de página
• Page-table
Endereço
• Virtual
• Físico
Copyright (c) Walter Fetter Lages – p.53
Tabela de Páginas
Copyright (c) Walter Fetter Lages – p.54
Hardware de Paginação
•
•
Usualmente a tabela de páginas é mantida em
memória e não em registradores
• Registrador de base da tabela de páginas
• Translation look-aside buffer (TLB)
• Evita dois acessos a memória
Páginas também podem ter bits de proteção
associados
• Bit de presença/ausência
Copyright (c) Walter Fetter Lages – p.55
Páginas de 4MB na IA32
Copyright (c) Walter Fetter Lages – p.56
Páginas de 4KB na IA32
Copyright (c) Walter Fetter Lages – p.57
Segmentação e Paginação IA32
Copyright (c) Walter Fetter Lages – p.58
Proteção de I/O na IA32
•
•
•
Existe um nível de privilégio de I/O
• Apenas processos com nível de privilégio
menor ou igual podem executar instruções de
I/O
Associado a cada processo pode existir um
bitmap de permissões de I/O
• Apenas as portas habilitadas podem ser
acessadas
Hardware Virtual
• Virtualização de dispositivos
Copyright (c) Walter Fetter Lages – p.59
I/O Permission Bit Map
Copyright (c) Walter Fetter Lages – p.60
Coprocessador (FPU)
•
•
•
Registradores e opcodes ponto flutuante
Na IA32 opera em notação polonesa reversa
A partir do 80486DX passou a ser FPU
Copyright (c) Walter Fetter Lages – p.61
Registradores FPU
Copyright (c) Walter Fetter Lages – p.62
Controle FPU
Copyright (c) Walter Fetter Lages – p.63
Status FPU
Copyright (c) Walter Fetter Lages – p.64
Exemplo FPU
.intel_syntax noprefix
.text
.global sum
# float sum(float a,float b)
sum:
push
ebp
mov
ebp,esp
finit
wait
fld
[ebp+8]
fadd
[ebp+12]
fwait
pop
ebp
ret
# a
# b
Copyright (c) Walter Fetter Lages – p.65
Microcontroladores
•
Microprocessadores otimizados para aplicações
de controle/automação
• Processador
• RAM
• ROM, EPROM, flash EEPROM
• Portas de I/O com latches e Tri-states
• Temporizadores
• Portas seriais
• Portas CAN, USB, I2C, one-wire
.
• ..
Copyright (c) Walter Fetter Lages – p.66
80C390
Copyright (c) Walter Fetter Lages – p.67
Mapa de Memória do 80C390
Copyright (c) Walter Fetter Lages – p.68
Download