Microprocessadores e Microcontroladores Walter Fetter Lages w.fetter@ieee.org 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 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] # a fadd [ebp+12] # b fwait pop ebp ret 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