Upload
vunga
View
215
Download
0
Embed Size (px)
Citation preview
Microprocessadores eMicrocontroladores
Walter Fetter [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ãosimé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 parautilizar 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 MemoryROMPROM Programmable ROMEPROM Ereasable PROMEEPROM Electrically Ereasable PROMFlash-EEPROM
RAM Random Access MemorySRAM Static RAM
Async SRAMSync SRAMPB SRAM Pipelined Burst SRAM
DRAM Dynamic RAMCopyright (c) Walter Fetter Lages – p.14
DRAM
DRAM Dynamic RAMDRAMF(E)PM RAM Fast (Enhanced) Page-mode
RAMEDO RAM Extended Data Output RAMBEDO RAM Burst Extended Data Output RAMSDRAM Synchronous DRAMDDR SDRAM Double Data Rate SDRAMVRAM 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, x8664• 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, x8664• AMD64 ≈ EMT64
• AMD Athlon 64 X2, Turion 64 X2• AMD64, x8664
• 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 demodo 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 enableCopyright (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 enableCopyright (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 sistemaoperacional
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çãodas partições
• Uma fila de tarefas para cada partição• Uma fila única• Fila única combest-fit• Fila única combest-fite máximo de
skip-overCopyright (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 acriação/destruição das tarefas
• Fragmentação de memória• Compactação de memória
• Consome muito tempo -> normalmente feitodurante a alocação/desalocação de memóriaem 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á umendereço inicial diferente. Como oprogramador/compilador/linker saberá oendereç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 debase 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 operacionalem 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 controladospelo sistema operacional
• O offset é controlado pelo programa de aplicação• Proteção
• Usualmente o descritor de segmento temalgums bits associados que são utilizados paradeterminar as características de proteção dosegmento
• 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 é alteradoCopyright (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 segmentosapenas 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 registradoresCopyright (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 emmemó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 deI/O
• Associado a cada processo pode existir umbitmap 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] # a
fadd [ebp+12] # b
fwait
pop ebp
ret
Copyright (c) Walter Fetter Lages – p.65
Microcontroladores
• Microprocessadores otimizados para aplicaçõesde 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