Prévia do material em texto
MICROPROCESSADOR i8086/8088 Arquitetura de Computadores HISTÓRIA Em 1978, Intel lança o primeiro processador de 16 bits: o 8086 117 instruções Podem processar bits, bytes, palavras e blocos de até 64Kbytes Barramento de endereços de 20 bits (memória até 1MB) Barramento de dados de 16 bits 64K portas de entrada/saída (I/O) 24 modos de endereçamento de operandos na memória 256 tipos de Interrupções Clock de 4,77 MHz Pastilha de CI de 40 pinos (29K transistores) ARQUITETURA DE COMPUTADORES 2 HISTÓRIA Em 1979, Intel lança um processador de menor custo: o 8088 Barramento de dados de 8 bits Em 1981, a IBM lança o primeiro microcomputador pessoal: IBM PC Microprocessador i8088 @ 4,77 MHz Memória de 64 Kbytes na placa-mãe (expansão até 256 Kbytes) 5 slots de expansão Drive de 5 1/4 “ com capacidade de armazenamento de 360 Kbytes Custo de US$ 1.565 ARQUITETURA DE COMPUTADORES 3 HISTÓRIA 8086 8088 ARQUITETURA DE COMPUTADORES 4 http://www.google.com/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&docid=7hN88yHDtgIEIM&tbnid=cQEoH6dFjpBxyM:&ved=&url=http://www.techspot.com/article/797-iconic-pc-hardware/&ei=BpDiU4WbFKfgsAS1yoK4Bw&bvm=bv.72197243,d.cWc&psig=AFQjCNGlA_RJKfVwoRx0seoc9saK-ySYEw&ust=1407443334629766 http://www.google.com/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&docid=Oq72-mEWN6eb5M&tbnid=b8Jcrncgcck0hM:&ved=&url=http://www.maximumpc.com/article/features/a_brief_history_cpus_31_awesome_years_x86&ei=b5DiU5XcHvDMsQSCmYHoAw&bvm=bv.72197243,d.cWc&psig=AFQjCNEH9u4fN7-2_vbEp32TKv09iiaTdw&ust=1407443439858139 HISTÓRIA ARQUITETURA DE COMPUTADORES 5 Fotos do protótipo da placa-mãe para o IBM PC! HISTÓRIA Em 1983, a IBM lança uma versão melhorada do IBM PC: o IBM PC/XT (eXtended Technology) 256 Kbytes de RAM (expansão até 640 kbytes) Capacidade para disco rígido de 10 MB 8 slots de expansão Clock 8 MHz (Turbo) ARQUITETURA DE COMPUTADORES 6 MODOS DE OPERAÇÃO Mínimo Máximo (Co-processador) ARQUITETURA DE COMPUTADORES 7 MODOS DE OPERAÇÃO: MÁXIMO Controlador de Barramento i8288 Gera os sinais de controle do barramento ARQUITETURA DE COMPUTADORES 8 MODOS DE OPERAÇÃO: MÁXIMO Co-processador i8087 (1980) 45 K transistores, 50 kFLOPS (Floating Operations per Second) Adiciona 68 instruções numéricas para funções de inteiros de precisão estendida, ponto flutuante (PF), trigonométrica, logarítmica, e exponencial Desempenho geral até 100 vezes do que o 8086 para instruções numéricas (soma de PF: 10.6 s x 1000 s) 8 registradores (propósito específico) de 80 bits 7 tipos de dados (16, 32, e 64 bits inteiros, 32 e 64 bits ponto flutuante, 18 dígitos BCD (Binary Coded Decimal) ARQUITETURA DE COMPUTADORES 9 I8086/8088: MODO MÁXIMO ARQUITETURA DE COMPUTADORES 10 ESTRUTURA INTERNA ARQUITETURA DE COMPUTADORES 11 E x e cu ti v e U n it U n id a d e d e E x e cu çã o B u s In te rfa ce U n it U n id a d e d e In te rfa ce d e B a rra m e n to BUS INTERFACE UNIT: OPERAÇÕES Forma o endereço físico do barramento Carrega as instruções e dados da memória e de E/S Forma a fila de instruções Transfere os resultados para a memória e E/S Troca informações com a Unidade de Execução ARQUITETURA DE COMPUTADORES 12 BUS INTERFACE UNIT: INFRAESTRUTURA 4 registradores de segmento de 16 bits (endereçamento da memória) 6 registradores de 8 bits (4 para o 8088) na fila (FIFO) de instruções 2 registradores internos de comunicação com EU 1 registrador de 16 bits que é o ponteiro de instruções (IP - Instruction Pointer) Somador para calcular 20 bits do endereço físico com base em 2 fontes (registradores de 16 bits cada) ARQUITETURA DE COMPUTADORES 13 UNIDADE DE EXECUÇÃO Responsável pela execução das instruções Infraestrutura Unidade Lógica e Aritmética (ULA) de 16 bits 3 registradores temporários (não acessíveis pelo programador) 1 registrador de status de 16 bits 8 registradores de 16 bits de uso geral ARQUITETURA DE COMPUTADORES 14 UNIDADE DE EXECUÇÃO: REGISTRADORES Registradores de Dados AX (AH+AL): acumulador BX (BH+BL): base para referenciar memória CX (CH+CL): contador DX (DH+DL): dados (multiplicação e divisão de 32 bits) Registradores de Ponteiros SP: ponteiro de pilha BP: ponteiro de base Registradores de Índice SI: índice de fonte DI: índice de destino ARQUITETURA DE COMPUTADORES 15 UNIDADE DE EXECUÇÃO: REGISTRADORES O registrador de status do processador (flags) tem por objetivo dar suporte às decisões dentro do programa e habilitar/desabilitar certas operações do processador Tipos Flags de status – resultado de uma operação aritmética ou lógica Flags de controle – habilitar / desabilitar operações do processador ARQUITETURA DE COMPUTADORES 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 O D I T S Z A P C UNIDADE DE EXECUÇÃO: REGISTRADORES Flags de Status Carry (CF): ligado se uma operação de adição resulta em um carry, ou se uma subtração resulta em um borrow (CF = 1) Paridade (PF): ligado quando um valor contém um número par de bits ligados (PF = 1 – paridade par) Carry Auxiliar (AF): semelhante ao CF, porém é usado para indicar um carry ou um borrow nos quatro bits menos significativos (AF = 1) Zero (ZF): ligado quando o resultado de uma operação é zero Sinal (SF): indica se um número é negativo ou positivo (bit de sinal do resultado é copiado para este flag) Overflow (OF): ligado quando resultado excede limites do tamanho de operandos ARQUITETURA DE COMPUTADORES 17 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 O D I T S Z A P C UNIDADE DE EXECUÇÃO: REGISTRADORES Flags de Controle Trap (TF): controla execução de comandos por passos (TF=1 faz o MP para após cada instrução) Interrupção (IF): define se as interrupções mascaráveis podem se executadas (IF=1) ou não (IF=0) permite interrupções (instruções STI e CLI) Direção (DF): determina a direção em que instruções de strings são processadas (em relação a SI e DI). Se DF = 0, direção é a partir do endereço mais significativo. ARQUITETURA DE COMPUTADORES 18 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 O D I T S Z A P C ORGANIZAÇÃO DA MEMÓRIA Endereçamento de 1MB (00000H a FFFFFH) Barramento de endereços de 20 bits As palavras são armazenadas na memória utilizando a ordem little endian ARQUITETURA DE COMPUTADORES 19 ORGANIZAÇÃO DA MEMÓRIA: 8088 No 8088, o espaço de endereçamento de memória é logicamente organizado como um vetor linear de 1M bytes Como o 8088 possui barramento de dados de 8 bits, a memória consiste de um único banco Acesso a um byte no 8088 (1 acesso) 0000 AA um byte no endereço 0000 Acesso a palavra (16 bits) no 8088 (2 acessos) 0000 BB byte menos significativo no endereço 0000 0001 AA byte mais significativo no endereço 0001 ARQUITETURA DE COMPUTADORES 20 ORGANIZAÇÃO DA MEMÓRIA: 8086 No 8086, 2 bytes consecutivos podem ser acessados simultaneamente como se fosse uma palavra de 16 bits (alinhamento da palavra) O espaço de endereçamento da memória é fisicamente dividido em dois bancos de 512K bytes cada Um banco é associado com a parte menos significativa do barramento de dados (D7-D0) e o outro banco é associado com a parte mais significativa (D15-D8) A0 é utilizado para selecionar o banco par, enquanto que sinal BHE é utilizado para selecionar o banco ímpar ARQUITETURA DE COMPUTADORES 21 Banco Ímpar 512K x 8 Banco Par 512K x 8 A19-A1 A0 A18-A0 A18-A0SEL SEL D7-D0 D7-D0 D15-D8 D7-D0 BHE ORGANIZAÇÃO DA MEMÓRIA: 8086 Como o 8086 possui barramento de dados de 16 bits, o acesso a um único byte descarta o byte supérfluo, independente do endereço em que estiver Quando o acesso for a uma palavra em endereço par (byte menos significativo em banco par e mais significativo em banco ímpar), a palavra é dita estar alinhada, pois pode ser acessada com uma única operação A seguinte operação é realizada em um único acesso0000 BB byte menos significativo no endereço 0000 0001 AA byte mais significativo no endereço 0001 ARQUITETURA DE COMPUTADORES 22 ORGANIZAÇÃO DA MEMÓRIA: 8086 Quando o acesso for a uma palavra em endereço ímpar (byte menos significativo em banco ímpar e mais significativo em banco par), a palavra é dita estar não alinhada, e deve ser acessada em dois ciclos A seguinte operação é realizada em 2 acessos 0000 nn byte par anterior lido e descartado 0001 BB byte de baixa ordem acessado 0002 AA byte de alta ordem acessado 0003 nn byte ímpar seguinte lido e descartado ARQUITETURA DE COMPUTADORES 23 Banco Par Banco Ímpar AA nn nn BB 2 0 ORGANIZAÇÃO DA MEMÓRIA: SEGMENTAÇÃO Como os registradores possuem tamanho de 16 bits, o endereçamento de 20 é solucionado através da segmentação da memória Memória é dividida em segmentos de 64 KB (registradores possui 16 bits) Segmentos são posicionados em locais diferentes da memória ARQUITETURA DE COMPUTADORES 24 00000H FFFFFH 64 KB 64 KB 64 KB ORGANIZAÇÃO DA MEMÓRIA: SEGMENTAÇÃO Cada endereço é posicionado utilizando um endereço base A base do segmento é armazenada em um registrador de 16 bits O endereço físico (20 bits) é obtido deslocando o valor do registrador de 16 bits 4 bits à esquerda Equivalente a multiplicar por 16 Registrador Endereço base do segmento 0000H 00000H (primeiro segmento) 0001H 00010H 1000H 10000H FFFFH FFFF0H (Último segmento válido) ARQUITETURA DE COMPUTADORES 25 00000H FFFFFH 64 KB 64 KB 64 KB En d e re ço B a se ORGANIZAÇÃO DA MEMÓRIA: SEGMENTAÇÃO Como o endereço base do segmento é obtido através de um deslocamento de um registrador, os segmentos podem ser sobrepostos Permite utilizar melhor a memória de tal forma que cada segmento ocupe exatamente o que precisa Não há garantia de que o acesso de um segmento sobreposto seja realizado dentro do respectivo segmento (pode estender até o segmento sobreposto) ARQUITETURA DE COMPUTADORES 26 ORGANIZAÇÃO DA MEMÓRIA: SEGMENTAÇÃO Tamanho Registrador Memória Segmento 24KB 0000H 00000H 32KB 1000H 10000H Desperdício de 72 KB 24KB 0000H 00000H 32KB 6000H 06000H Sem desperdício por conta da sobreposição ARQUITETURA DE COMPUTADORES 27 00000H 0000H 10000H 1000H 1FFFFH 32 KB 40 KB 0000H 6000H 00000H 60000H ORGANIZAÇÃO DA MEMÓRIA: SEGMENTAÇÃO Uma posição de memória é definida através do endereço base (16 bits) e um deslocamento (16 bits) Registrador de Segmento * 16 + Deslocamento Registrador de Segmento * 10H + Deslocamento ARQUITETURA DE COMPUTADORES 28 Deslocamento (16 bits) Endereço Base (16 bits) 0000 Endereço Físico (20 bits) ORGANIZAÇÃO DA MEMÓRIA: SEGMENTAÇÃO Os segmentos são definidos pelo conteúdo A arquitetura possui 4 registradores de segmento de 16 bits cada CS (Code Segment): instruções a serem executadas pelo MP SS (Stack Segment): uso reservado para a pilha ou stack (LIFO) DS (Data Segment): segmento de dados ES (Extra Segment): segmento de dados auxiliares Cada programa pode definir e utilizar os segmentos diferentemente ARQUITETURA DE COMPUTADORES 29 ORGANIZAÇÃO DA MEMÓRIA: SEGMENTAÇÃO No caso de uma instrução, o endereço físico é calculado da seguinte maneira CS = 123AH e IP = 341BH ARQUITETURA DE COMPUTADORES 30 3 4 1 B 1 2 3 A 0 1 5 7 B B + Deslocamento Segmento ( x 10H) Endereço Físico ORGANIZAÇÃO DA MEMÓRIA: SEGMENTAÇÃO O processador trabalha internamente com endereços lógicos Forma do endereço lógico é SEGMENTO:DESLOCAMENTO 123AH:341BH O endereço físico é somente formado para acessar a memória (BIU) SEGMENTO x 10H + DESLOCAMENTO ARQUITETURA DE COMPUTADORES 31 ORGANIZAÇÃO DA MEMÓRIA: SEGMENTAÇÃO Registradores (como endereços lógicos) envolvidos na formação do endereço físico CS e IP para endereçar código SS e (SP, BP) para endereçar a pilha DS (e/ou ES) e BX, SI e DI para endereçar dados (DI é relacionado ao ES quando parte endereço de um operando de instrução de string é o destino) ARQUITETURA DE COMPUTADORES 32 ORGANIZAÇÃO DA MEMÓRIA: PILHA Tem por objetivo armazenar dados temporários (LIFO) O segmento é definido pelo registrador SS (Stack Segment) O deslocamento é definido pelo registrador SP (Stack Pointer) Topo da Pilha (Top of Stack -- TOS) é definido por SS:SP Endereços variam do mais alto para o mais baixo (endereços decrescem) ARQUITETURA DE COMPUTADORES 33 00000H FFFFFH 64 KB 64 KB 64 KB SS TOS=SS:SP ORGANIZAÇÃO DA MEMÓRIA: PILHA Duas instruções manipulam a pilha push (empilha) 1. Atualiza o deslocamento dentro da pilha: SP SP – 2 2. Escreve uma palavra de dados na pilha nos endereços SS:SP e SS:SP+1 pop (desempilha) 1. Lê uma palavra da pilha dos endereços SS:SP e SS:SP+1 2. Atualiza o deslocamento dentro da pilha SP SP + 2 ARQUITETURA DE COMPUTADORES 34 End Memória(1 byte) X-6 X-5 X-4 78H X-3 56H X-2 34H X-1 12H X Início da PilhaSS SP push 1234H push 5678H pop AX MODO DE OPERAÇÃO: MÍNIMO Execução dos comandos 1. Busca (carga) do código de operação (COP) na memória de programas 2. Leitura do operando da memória de dados, se necessário 3. Execução do código de operação dentro do MP 4. Escrita do resultado para memória de dados, se necessário BIU EU Instruções ficam armazenadas em uma fila de instruções (contém as próximas instruções) As etapas 1-Busca, 2-Leitura e 4-Escrita são executadas em paralelo com 3-Execução ARQUITETURA DE COMPUTADORES 35 MODO DE OPERAÇÃO: MÍNIMO Interação do MP com dispositivos externos (Mem e E/S) através de ciclo de barramento Ciclo de barramento contém 4 períodos de CLK (T1,T2,T3, e T4) READY serve para sincronização dos dispositivos e o MP Memória coloca READY = 1 para avisar quando está pronta para transferência. Caso contrário MP espera pelo dispositivo, introduzindo períodos de CLK Tw (WAIT) ARQUITETURA DE COMPUTADORES 36 CONTROLE DO MP Inicialização Circuito simples gera o sinal RESET=0 para a entrada do Gerador de Relógio Sinal tem que durar 4 CLK e sinal RESET=1 é enviado para o MP Passa os estados nas linhas A/D/S (20 linhas) para o estado Z Sinais de controle externos M/IO, RD, WR para Z e ALE para 0 Todos os registradores internos são gerados com exceção do CS que recebe o código FFFFH (juntamente com IP=0 formam endereço inicial de memória FFFF0H) Parada Ocorre pelo comando especial HLT (Halt) MP para todas as operações, gerando os períodos de CLK inativos Ti MP em estado de parada pode reagir à interrupção externa e também para RES MP reage para sinal HOLD ARQUITETURA DE COMPUTADORES 37 ESTRUTURA BÁSICA ARQUITETURA DE COMPUTADORES 38 ESTRUTURA BÁSICA ARQUITETURA DE COMPUTADORES 39 ESTRUTURA BÁSICA Circuitos da placa-mãe do PC/XT CPU MP i8088, CP i8087 Gerador de Clock i8284, Controlador de Barramento i8288 Controlador de Interrupção Programável (PIC) i8259A Controla 8 níveis de interrupção (IRQ0-IRQ7) IRQ0 é utilizado pelo timer para atualizar o relógio IRQ1 é utilizado pelo teclado (um canal i8255) IRQ2 a IRQ7 são dedicados aos slots de expansão ARQUITETURA DE COMPUTADORES 40 ESTRUTURA BÁSICA PPI - i8255 Leitura do teclado, leitura das chaves de configuração do sistema, interface dos alto-falantes e checagem de paridade das memórias RAM Controlador de DMA - i8237A 4 canais de DMA 1 canal é usado juntamente com um “timer” do i8253 para gerar o refresh das DRAMs Três canais restantes podem ser utilizados pelos periféricos através de slots (DRQ1...DRQ3) Timer (temporizador) - i8253 3 timers Refresh da memória DRAM Geração de sons (alto-falante) Atualizar o relógio de tempo real ARQUITETURA DE COMPUTADORES 41 ESTRUTURA BÁSICA Memória RAM Banco de 256 Kbytes de RAMs dinâmicas (nono bit por byte para controle de paridade) Memória ROM 40 Kbytes 8K da ROM BIOS 32K do interpretador BASIC 8 slots de expansão ConectoresISA para conectar outros periféricos que tornam o PC mais poderoso ARQUITETURA DE COMPUTADORES 42 MAPAS DE MEMÓRIA E I/O Mapa da Memória Mapa de I/O ARQUITETURA DE COMPUTADORES 43 INTERRUPÇÕES Controladas pelo i8259A 8 vias de interrupções (IRQ0-IRQ7) Programado pelo BIOS com os endereços 020H e 021H no mapa de Entrada/Saída Processo de Reconhecimento de Interrupção Recebe os pedidos de interrupção dos dispositivos internos e externos Gera somente um pedido de interrupção para o MP i8088 (prioridade) MP i8088, termina de executar algum comando, aceita a interrupção colocando 0 nas linhas S2’-S1’ CB 8288 interpreta estas linhas de status e ativa o sinal INTA’ = 0 O i8259A recebe o sinal indicando que a sua interrupção foi aceita ARQUITETURA DE COMPUTADORES 44 INTERRUPÇÕES Após o recebimento do sinal INTA’=0, o i8259A coloca no barramento de dados um byte (tipo de interrupção) O byte é uma programação interna feita pelo BIOS 5 bits mais significativos: base do endereçamento da tabela de vetores de interrupção 3 bits são completados pelo i8259A 8 interrupções são obtidas através dos bytes sequenciais do i8259A (IRQ0: menor endereço) O MP i8088 converte o byte em endereço através da multiplicação por 4 Vetor está localizado nos primeiros 1024 bytes do mapa de memória do PC ARQUITETURA DE COMPUTADORES 45 INTERRUPÇÕES ARQUITETURA DE COMPUTADORES 46 INTERRUPÇÕES 1.MP i8088/8086 recebe o pedido de interrupção pelo pino INT do PIC i8259A 2.O MP após o término da instrução em execução, responde pelo sinal INTA’ 1° sinal INTA’ =0 (T2, T3 de CLK) 2° sinal INTA =0 (T2, T3 de CLK do próximo ciclo) 3.Recebendo este sinal, o PIC 8259A coloca no barramento de dados (data bus – DB) o byte de tipo de interrupção n (0 a 255) 4.PSW (“Flags”), CS e IP do programa interrompido são transferidos à pilha (nesta ordem) 5.IF,TF ← 0 automaticamente, proibindo a interrupção da outra fonte 6.IP ← Mem[4*n], CS ← Mem[4*n+2] da Tabela de vetores de interrupção na memória 7.MP executa a sub-rotina de atendimento desta interrupção que começa pelo endereço novo CS:IP Para liberar as interrupções do nível superior, a sub-rotina deve conter o comando STI que faz IF ← 1 A sub-rotina de tratamento de interrupção deve ser finalizada pelo comando IRET que recupera IP, CS e PSW (“flags”) da pilha 8.Retorno ao programa interrompido MP começa executar o próximo comando deste programa de acordo com IP, CS e “Flags” recuperados da pilhaARQUITETURA DE COMPUTADORES 47 INTERRUPÇÕES ARQUITETURA DE COMPUTADORES 48