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