Sistemas Microcomputadorizados 1 Sistemas Microcomputadorizados UNESP/FEG/DEE José Celso Freire Junior JCFJ 2 Sistemas Microcomputadorizados Tópicos • Introdução • Padrões de Interfaceamento • Os processadores 8088/8086 • Placa Mãe • Interfaceamento com o 8086 • Dispositivos de Armazenamento • Os processadores 80386/80486 • Interfaces IDE / E-IDE • Os processadores Pentium • Interface SCSI • PIC e PTC • Interface PCMCIA • Interrupção e BIOS • Redes de Computadores • PPI e Porta Paralela • Ethernet • UART, Porta Serial e Modem • TCP/IP JCFJ 3 Introdução - I Sistemas Microcomputadorizados Primeiro Microprocessador: 4004 – – – – – 2.300 Transistores Palavras de 4 bits 46 instruções 4Kb de memória reservado para programação 1Kb de memória reservado para dados Segunda Geração: 8008, 8080, 8085 (1974) – Palavras de 8 bits – Barramento de endereços de 14 bits (8008) – Capacidade máxima de endereçamento de 16 KB (8008) Terceira Geração: 8088/8086 (1978) – – – – – Palavras de 8 ou 16 bits Barramento de dados de 16 bits Barramento de endereços de 30 bits Capacidade máxima de endereçamento de 1MB Primeiro processador na linha x86 Utilizada até hoje... Imagens: http://www.museudocomputador.com.br/encipro.php JCFJ 4 Introdução - II Sistemas Microcomputadorizados 80386DX (1985) – – – – Compatível com os anteriores Palavras de 8, 16 ou 32 bits Barramentos de dados e endereços de 32 bits Capacidade máxima de endereçamento de 4 GB 80486DX (1989) – Aperfeiçoamento do 80386DX – Memória cache e co-processador integrados – Duas vezes mais rápido que um 386 Pentium (1993) – – – – – JCFJ 3,3 milhões de transistores Compatível com os anteriores Processador super-escalar de 64 bits Barramento de dados de 64 bits Barramento de endereços de 32 bits Imagens: http://www.museudocomputador.com.br/encipro.php Introdução 5 Sistemas Microcomputadorizados Desenvolvimento dos Processadores Intel JCFJ 6 Sistemas Microcomputadorizados Os Processadores 8088/8086 8088: barramento de endereços de 20 bits / barramento de dados externo de 8 bits. 8086: barramento de endereços de 20 bits / barramento de dados externo de 16 bits. Pinos com dupla função: AD0-AD7 Os 8 bits menos significativos dos dados (A0-A7) ou dos endereços (D0-D7). Circuitos auxiliares: – Controlador de Barramentos 8288: gera, a partir das linhas S0-S2, os sinais de controle (IOR, IOW, MEMR, MEMW, INTA) necessários – Gerador de Clock 8284 – Controlador de Interrupções 8259 JCFJ Os processadores 8088/8086 7 Sistemas Microcomputadorizados Conexões A8-A15 JCFJ Os processadores 8088/8086 8 Sistemas Microcomputadorizados Registradores Basicamente são localizações especiais de memória às quais um processador atribui nomes especiais O 8088/8086 tem 14 registradores JCFJ Os processadores 8088/8086 - Registradores 9 Sistemas Microcomputadorizados Registradores de Propósito Geral: são em número de 4 e podem ser utilizados para manipular uma palavra de 16 bits ou duas de 8 bits Registrador se comporta como se fosse 2 Low byte e High byte – AX – Registrador Acumulador: o mais geral dos registradores Normalmente utilizado para todo tipo de operações de entrada/saída e algumas operações aritméticas AX = AH + AL AX High byte + AX Low byte – BX – Registrador Base: utilizado como registrador de endereçamento (BH+BL) – CX – Registrador Contador: utilizado por instruções que requerem contagens (número de vezes que um loop é executado) (CH+CL) – DX – Registrador de Dados: utilizado em algumas operações de entrada/saída e nas operações de multiplicação e divisão (DH+DL) Registradores de Endereçamento: utilizados nas operações de endereçamento da memória (16 bits): – SI – Índice-Fonte: utilizado como registrador índice em alguns modos de endereçamento indireto – DI – Índice-Destino: utilizado como registrador índice em alguns modos de endereçamento indireto – BP – Ponteiro-Base: permite acesso a dados dentro do segmento de pilha Usualmente utilizado para referenciar parâmetros acessados através da pilha – SP – Ponteiro de Pilha: utilizado para determinar o endereço do topo de um pilha de memória JCFJ Os processadores 8088/8086 - Registradores 10 Registradores de Status: são utilizados para testar diversas condições em uma operação (16 bits) Ex.: resultado é negativo, resultado é zero, etc. – IP – Ponteiro de Instrução: contém o endereço da próxima instrução do programa que será executada – FLAGS – Sinalizadores: mantém uma coleção de 9 diferentes sinalizadores: Sistemas Microcomputadorizados Bit 0 – C (Carry): transporte do bit de mais alta ordem após uma operação aritmética, ou o último bit após uma operação de rotação ou deslocamento Bit 2 – P (Parity): indica a paridade dos 8 bits de baixa ordem de um resultado após uma instrução lógica ou aritmética (1=ímpar e 0=par) Bit 4 – A (Aux. Carry): indica o transporte do bit 3 em um dado de 8 bits Bit 6 – Z (Zero): indica o resultado de uma operação aritmética ou de comparação (0=não zero ou diferente e 1=resultado zero, ou igual) Bit 7 – S (Sign): contém o sinal após uma operação aritmética (0=positivo e 1=negativo) Bit 8 – T (Trap): permite a operação passo-a-passo; não se tem acesso a este bit somente programas especiais tem acesso Bit 9 – I (Interrupt): indica se as interrupções estão habilitadas ou não, ou seja, se serão atendidas ou não quando ocorrerem (1=habilitadas e 0=desabilitadas) este bit pode ser ativado por software Bit 10 – D (Direction): se o valor deste bit for 0 após a execução de uma instrução string, os registradores de índice envolvidos serão incrementados automaticamente e, em caso contrário, serão decrementados Bit 11 – O (Overflow): indica “estouro” após a realização de uma operação aritmética JCFJ Os processadores 8088/8086 - Registradores 11 Sistemas Microcomputadorizados Registradores de Segmentos: são em número de 4 sendo usados para gerar endereços de memória de 20 bits Apontam para 4 áreas de memória denominadas segmentos Cada um dos segmentos tem 16 bits, podendo endereçar 64 KB: – CS – Segmento do Código: define a localização de memória onde o código do programa é armazenado – DS – Segmento de Dados: define onde os dados de um programa serão armazenados – SS – Segmento de Pilha: define onde a pilha será armazenada – ES – Segmento Extra: área de dados de finalidade geral Todo endereçamento à memória é feito com referência aos registradores de segmentos, pois o 8086 tem uma Memória Segmentada. JCFJ Os processadores 8088/8086 12 Segmentação da Memória Sistemas Microcomputadorizados Memória segmentada 64 KB Endereçamento de memória de 20 bits 1MB endereçável – Número hexadecimal de 5 dígitos (00000h até FFFFFh) Offset: hexadecimal de 4 dígitos (0000h até FFFFh) Deslocamento dentro do segmento Segmento: hexadecimal de 4 dígitos (0000h até FFFFh) Endereço inicial do segmento – Endereçamento: segmento:offset Endereço Real: segmento deslocado de 4 bits a esquerda + offset – Exemplo: 2F84:0532 = 2FD72h Segmento (2F84): 0010 1111 1000 0100 0000 Offset (0532): 0000 0101 0011 0010 Endereço Real: JCFJ 0010 1111 1101 0111 0010 Segmento Deslocado à Esquerda em 4 bits Os processadores 8088/8086 – Segmentação da Memória 13 Os processadores 80386, 80486 e Pentium funcionam em dois modos: Virtual e Real – Modo Virtual: simulam um pseudo-8086 Modo protegido – Modo Real: utilizam toda sua capacidade de endereçamento e do barramento de dados Sistemas Microcomputadorizados Acesso a memória em C – Deve-se especificar em C o endereço 1234:9876 da seguinte maneira: 0x12349876 – Ponteiros near e far: Near: ponteiro de 16 bits usado para endereçar até 64 Kb de dados Far: ponteiro de 20 bits usado para endereçar até 1MB de dados. JCFJ 14 Interfaceamento com o 8086 Sistemas Microcomputadorizados Dois modos de comunicação com dispositivos externos – E/S Mapeada em Memória: mapeamento na memória física fornecendo um endereço real ao barramento de endereços Dispositivos mapeados em memória são acessíveis através da leitura/escrita nestes endereços – E/S Isolada: mapeados em uma área especial da memória Dispositivos são acessíveis através de portas especiais entre o dispositivo e o processador São isolados do sistema Existem 4 instruções para acesso (IN: byte/palavra e OUT: byte/palavra) JCFJ Interfaceamento com o 8086 – E/S Mapeada em Memória 15 PC’s – E/S Mapeada em Memória: Sistemas Microcomputadorizados – Processadores 80x86: interface com a memória realizada através de um controlador que interpreta os sinais do microprocessador e gera os sinais apropriados para a memória – Geralmente duas linhas são geradas pelo controlador R/W: operação de leitura (nível alto) ou escrita (nível baixo) na memória M/IO: indica se os dados serão escritos diretamente na memória (nível alto) ou nas portas (nível baixo) – Modo Avançado (Windows): é possível acessar a área acima de 1MB Windows 3.1 (16 bits): endereçamento de até 16 MB de memória física (000000h até FFFFFFh) Windows 95/98/2000/XP (32 bits): endereçamento de até 4 GB de memória física (00000000h até FFFFFFFFh) Windows 2000/XP: 64GB de memória RAM, com o uso das instruções Physical Address Extensions-PAE contidas nos processadores Intel Verificar: http://www.microsoft.com/brasil/technet/Colunas/ElcioF avare/Enderecando.mspx. JCFJ Interfaceamento com o 8086 – E/S Isolada Sistemas Microcomputadorizados PC’s – E/S Isolada: utiliza endereçamento de 16 bits (0000h até FFFFh) Possibilita mapear 64 KB JCFJ 16 17 Os Processadores 80386/80486 Sistemas Microcomputadorizados 80386DX - Razão do Sucesso: Grande salto em relação ao 8086 Potente e compatível com os anteriores – Versão DX: Barramento de Dados e Endereços de 32 bits Capacidade de endereçamento de 4 GB – Versão SX: Barramento de Dados externo de 16 bits e Barramento de dados de 24 bits Capacidade de endereçamento de 16 MB – Podia ser utilizado com um co-processador matemático externo – Executava somente uma instrução de cada vez 80486DX: Aperfeiçoamento do 80386 80386 com memória cache (8 Kb) e Co-Processador Matemático integrado no mesmo chip – Possibilidade de execução paralela de instruções através de um decodificador de instruções e unidades de execução de um pipeline de cinco estágios Cada um dos estágios opera em paralelo com os outros possibilitando execução de até cinco instruções ao mesmo tempo JCFJ Os processadores 80386/80486 80486DX: Sistemas Microcomputadorizados – Versão SX: versão mais barata sem o coprocessador matemático. – Possibilidade do processador trabalhar internamente com um múltiplo (2x, 3x, 4x) da velocidade do sistema. – Integrado no formato PGA (Pin-Grid Array) para economizar espaço. – Suporte a sistemas mais complexos e poderosos como as memórias cache de segundo nível (L-2 cache) e operações multiprocessadas. 80486SL: processadores especiais para utilização em Notebooks – Sistemas adicionais para gerenciar a energia consumida. – Capacidades extra de auto-monitoramento do sistema. – Funcionamento a velocidades reduzidas quando o sistema não está sendo utilizado. – Possibilidade do processador desligar automaticamente o sistema. JCFJ 18 Os processadores 80386/80486 19 Sistemas Microcomputadorizados Conexões Três principais interfaces de conexão: Memória/ES, Interrupção e Acesso Direto a Memória (DMA) W/R: determinam quando dados são escritos (W) ou lidos (R) na/da memória M/IO: determina se a comunicação é feita com a memória (M) ou com dispositivos isolados (IO) D/C: diferencia entre dados e sinais de controle – 80386DX/80486 têm barramentos externos de dados e endereços de 32 bits – A0 e A1 são decodificados para produzir os sinais de habilitação BE0-BE3 BE0-BE3: indicam a manipulação de palavras de 1 byte (0001), 2 bytes (0011), 3 bytes (0111) ou 4 bytes (1111) INTR: interrupção (pode ser ignorada) NMI: interrupção que não pode ser mascarada RESET: reset do sistema JCFJ Os processadores 80386/80486 20 Sistemas Microcomputadorizados Registradores Como processadores de 32 bits, o 80386 e o 80486 têm registradores de 32 bits Em seus registradores pode-se manipular “sub-registradores” de 8 e 16 bits Manter a compatibilidade Os registradores de propósito geral do 8086 (AX, BX, CX, DX, SI, DI e BP) foram renomeados EAX, EBX, ECX, EDX, ESI, EDI e EBP Os registradores CS, SS e CS continuam a ter 16 bits O registrador Sinalizador (FLAG) passa a ter 32 bits EFLAG JCFJ Os processadores 80386/80486 21 Memória Cache Sistemas Microcomputadorizados Velocidade normal de uma DRAM: 80 ns Velocidade do processador: 50 Mhz 20 ns Processador tem que esperar para ter os dados disponíveis Solução: utilização de bancos de memória SRAM e um controlador entre o processador e as memórias DRAM Se ocorrer um erro o processador irá acessar a memória normalmente Tamanhos típicos de memória cache são 16 KB, 32 KB e 64 KB para processadores 80486 e 256 KB e 521 KB para processadores Pentium Pentium IV = 2 MB JCFJ Os processadores 80386/80486 22 Sistemas Microcomputadorizados Memória Cache Cache L1 (Leve 1 - Nível 1 ou cache interno): em uso desde o processador 486 Chamado de cache interno porque se localiza dentro do processador O cache L1 é tão importante para o processador, que este, mesmo tendo clock inferior, pode ser mais rápido que um processador de clock superior, mas sem cache O tamanho deste cache pode ir de 16 KB (Pentium) a 512 KB (Pentium 4) Os processadores 486 tinham cache de 8 KB. Cache L2 (Level 2 - Nível 2 ou cache externo): o cache L1 era pequeno e apresentava alguns erros, que obrigavam o processador a buscar os dados na memória RAM Solução: implantação de uma memória cache fora do processador = cache L2 Para ser usada necessita de um controlador geralmente embutido no chipset da placa-mãe É este chip que também determina o tamanho máximo do cache L2 Tamanhos mais comuns são os de 256 KB e 512 KB, sendo possível a existência de caches maiores Diversos processadores trazem o cache L2 embutido dentro de si, fazendo com que as terminologias Interno e Externo percam o sentido. http://www.infowester.com/processadores3.php JCFJ Os processadores 80386/80486 23 Acesso Direto a Memória (DMA) Sistemas Microcomputadorizados Dispositivo externo tem acesso direto aos barramentos de dados e de endereços Existem duas linhas para controlar a DMA: – HOLD (bus hold request): habilitado (nível alto) quando o controlador de DMA quer ter acesso a memória – HLDA (bus hold acknowledge): em resposta a um pedido de HOLD o processador coloca seus barramentos de dados e endereços em estado de alta impedância e seta HLDA (nível alto) Após a transferência o controlador de DMA desabilita a linha HOLD (nível baixo) e o processador retoma o controle JCFJ Os processadores 80386/80486 24 Sistemas Microcomputadorizados Velocidade de Execução Cada instrução leva um tempo determinado para ser realizada A velocidade é determinada pela velocidade do relógio do processador Tempo de Execução de uma Instrução = número de ciclos de relógio necessários a sua execução x período do relógio Exemplo: mov ax,1234 Velocidade = 8 MHz Período do relógio = 0,125 µs 8086: 4 x 0,125 = 0,5 µs 80386: 2 x 0,125 = 0,25 µs JCFJ Os processadores Pentium 25 Os Processadores Pentium Sistemas Microcomputadorizados Pentium: adição de diversas novas características – Adição de um segundo pipeline de execução Os dois pipelines (u e v) podem executar duas instruções por ciclo de clock Operação Superescalar – Aumento no cache de nível 1 (L1-cache) com 8 KB para código e 8 KB para dados – Expansão do modo 8086-virtual permitindo a manipulação de 4 MB e páginas de 4 KB – Possibilidade de dados de 128 e 256 bits (embora com registradores de 32 bits) – Barramento externo de 64 bits – Suporte ao trabalho paralelo de diversos processadores através do APIC (Advanced Programmable Interrupt Controller) Pentium Pro: – Adição de uma arquitetura superscalar de 3 vias em oposição a de 2 vias do Pentium – Utilização de uma Previsão Avançada de Código Paralelo (Dynamic Execution MicroArchitecture) para a operação superscalar – Possibilidade de renomear os registradores Múltiplas instruções podem usar em alguns casos os mesmos registradores – Adição de um cache L2 externo de 256 Kb com um barramento dedicado de 64 bits – Barramento expandido de 36 bits que permite um acesso a 64 Gb de memória JCFJ Os processadores Pentium 26 Pentium II: Sistemas Microcomputadorizados – Aumento da velocidade de clock – Integração da tecnologia MMX Incluem 8 novos registradores (MM0 a MM7), 4 tipos de dados MMX e um conjunto de instruções MMX que suportam operações multimídia em alta velocidade – Single Edge Contact (SEC) Cartridge Packaging Torna mais fácil o manuseio e o processo de inserção e retirada do processador de seu soquete. – 2 Caches L1 de 16 Kb internos, um para o código e outro para os dados – Aumento de cache L2 externo de 256 Kb para 512 Kb – Estados avançados para o controle de funcionamento com baixo consumo de energia JCFJ Sistemas Microcomputadorizados Placa Mãe JCFJ http://compare.intel.com/PCC/intro.aspx Chipset Tecnologias Intel http://www.intel.com/products/processortechnology /index.htm?iid=homepage+proc_tech Sistemas Microcomputadorizados 27 Processadores Pentium JCFJ 28 29 Sistemas Microcomputadorizados PIC Controlador Programável de Interrupções (Programmable Interrupt Controller – PIC): 8259 CI de 28 pinos utilizado para gerar interrupções. Conexão do PIC com o sistema microprocessado Através do barramento (D0-D7) e linhas de handshaking e endereço (RD, WR, A0, INT e INTA.) JCFJ PIC – Controlador Programável de Interrupções 30 CS: utilizado para habilitar (nível lógico 0) ou desabilitar o PIC Registradores: – Registrador ICR (Interrupt Control Port): recebe as palavras de inicialização Sistemas Microcomputadorizados – Registrador IMR (Interrupt Mask Register): recebe a máscara de interrupção A0 = 0 ICP é endereçado - A0 = 1 IMR é endereçado RD/WR: indicam se o PIC está sofrendo um processo de leitura ou escrita. IRQ0-IRQ7: recebimento dos pedidos de interrupção INT: após um pedido de interrupção (IRQ0-IRQ7), dependendo da máscara de interrupções o PIC coloca a linha INT em nível lógico 1 INT do PIC é lido pelo processador em seu pino de interrupção INTA: após o processador ter aceito o pedido de interrupção ele colocará esta linha em nível lógico 0 Após receber o aceite do processador (INTA) o PIC colocará os dados apropriados no barramento de dados JCFJ 31 PTC Sistemas Microcomputadorizados Controlador Programável de Temporização (Programmable Timer Controller – PTC): 8254 CI de 24 pinos utilizado para contar pulsos em operações de temporização Conexão do PTC com o sistema microprocessado Através do barramento (D0-D7) e linhas de handshaking e endereço (RD, WR, A1 e A0) JCFJ PTC – Controlador Programável de Temporização 32 4 Registradores: – Contador 0 – Contador 2 – Contador 1 – Registrador de Controle Sistemas Microcomputadorizados A0-A1: Selecionam o registrador – 00: Contador 0 – 10: Contador 2 – 01: Contador 1 – 11: Registrador de Controle RD/WR: selecionam uma operação de leitura ou de escrita para o dispositivo CS: utilizado para habilitar (nível lógico 0) ou desabilitar a PTC Conexões de cada Contador: Entrada de velocidade de relógio na linha CLK e saída na linha OUT Um nível alto em GATE faz com que o contador comece a contar Faixa de cada Contador: 0/0000h até 65535/FFFFh Contadores de 16 bits descendentes Endereçamento dos Registradores JCFJ PTC – Controlador Programável de Temporização 33 Sistemas Microcomputadorizados Registrador de Controle: controla a funcionalidade de cada contador A palavra de controle seguida do valor do contador devem ser enviados seqüencialmente SC1, SC2: Seleção do contador 00: C0, 01: C1, 10:C2, 11: Ilegal RL1, RL0: 00: Contador mantém o dado – 01: Ler/Escrever somente o MSB – 10: Ler/Escrever somente o LSB – 11: Ler/Escrever primeiro o LSB e depois o MSB M2,M1,M0: Modo do Contador 000: Modo 0, 001: Modo 1, X10: Modo 2, X11: Modo 3, 100: Modo 4 e 101: Modo 5 BCD: 0: Contagem em binário e 1: Contagem em BCD JCFJ PTC – Controlador Programável de Temporização 34 Modos Sistemas Microcomputadorizados – Modo 0 – Interrupção ao Final da Contagem: a saída está inicialmente em nível baixo, permanecendo neste nível até o final da contagem Se GATE for para nível baixo a saída é desabilitada Exemplo: Modo 0 com contador armazenado com 4 JCFJ PTC – Controlador Programável de Temporização - Modos 35 Sistemas Microcomputadorizados – Modo 1 – Pulso Programado: similar ao modo 0, mas a saída inicia em nível alto, passando a nível baixo no início da contagem e permanecendo até o final da contagem, quando passa novamente a nível alto Uma transição de nível baixo para alto em GATE inicializa a contagem Um nível alto ou baixo em GATE após a contagem não interfere na contagem Exemplo: modo 1 com contador armazenado com 4 JCFJ PTC – Controlador Programável de Temporização - Modos 36 Sistemas Microcomputadorizados – Modo 2 – Divisor: neste modo a velocidade do relógio de entrada é dividida pelo valor armazenado no contador A saída vai a nível baixo por um ciclo e volta ao nível alto contagem iniciada por uma transição de nível baixo para alto no GATE Exemplo: modo 2 com contador armazenado com 4 saída em nível alto por 3 ciclos e baixa por um JCFJ PTC – Controlador Programável de Temporização - Modos 37 Sistemas Microcomputadorizados – Modo 3 – Gerador de Onda Quadrada: similar ao modo 2, mas a saída é uma onda quadrada Quando o valor no contador é par os períodos altos e baixo são iguais e quando é ímpar um período extra em nível alto é adicionado Contagem iniciada por uma transição de nível baixo para alto no GATE Exemplo: modo 3 com contador armazenado com 4 Saída fica em nível baixo por 2 ciclos e em nível alto por 2 ciclos JCFJ Sistemas Microcomputadorizados PTC – Controlador Programável de Temporização - Modos 38 – Modo 4 – Pulso Habilitado por Software: este modo é similar ao modo 2 exceto pelo fato de que GATE não inicializa a contagem A saída vai a nível alto para a contagem e fica em nível baixo por um período voltando então ao nível alto – Modo 5 – Pulso Habilitado por Hardware: este modo é similar ao modo 2 exceto pelo fato de que GATE não interferir na contagem A saída permanece em nível alto durante a contagem passando a baixo no último período A contagem é inicializada quando a entrada passa a nível alto Resumo JCFJ BIOS e Interrupções 39 BIOS e Sistema Operacional Sistema Básico de Entrada e Saída - BIOS (Basic Input/Output System): conjunto Sistemas Microcomputadorizados de programas que faz a interface com os diversos componentes de um sistema computadorizado como teclado, monitores, impressoras e discos. Utilização da BIOS torna a criação de programas que utilizam estes dispositivos mais simples e agradável. Duas Partes: – BIOS Permanente: são programas que ficam permanentemente armazenados em uma memória ROM Parte que inicializa o computador e que contém os programas de comunicação com os dispositivos residentes. – BIOS não Permanente: são programas que são carregados quando o Sistema Operacional é carregado. JCFJ BIOS e Interrupções 40 BIOS e Sistema Operacional Sistema Operacional: conjunto de programas que permite a um usuário, ou a outros Sistemas Microcomputadorizados programas, acessar os dispositivos de hardware do sistema de uma maneira amigável. – DOS (Disk Operating System): parte do sistema operacional que gerencia o acesso do sistema aos discos e aos arquivos armazenados nestes JCFJ BIOS e Interrupções 41 Interrupções Sistemas Microcomputadorizados Interação com Dispositivos Externos: um sistema computadorizado interage com dispositivos externos de duas maneiras: – Polling: o sistema faz uma varredura em todos os dispositivos a ele conectados e verifica se algum quer “falar” com o processador Problema: perde-se muito tempo – Interrupções: o dispositivo que quer “falar” com o processador manda um pedido de interrupção O processador irá tratar então esta interrupção através de Rotinas de Serviço de Interrupção (ISR - Interrupt Service Routine) Os pedidos de interrupção dos diversos dispositivos externos são tratados por um PIC antes de serem enviados ao processador JCFJ BIOS e Interrupções Sistemas Microcomputadorizados Vetores de Interrupção Vetores de Interrupção são endereços que informam o gerenciador de interrupções o local onde se encontra a Rotina de Serviço de Interrupção (ISR) A cada interrupção é atribuído um número de 0 a 255 Os vetores de interrupção associados a cada número de interrupção ficam armazenados nos primeiros 1024 bytes da memória do PC. Exemplo: interrupção 0 0000:0000 a 0000:0003, interrupção 1 0000:0004 a 0000:0007 Os dois primeiros bytes armazenam o offset e os outros dois o endereço do segmento Cada número de interrupção é atribuído a uma tarefa pré-determinada Interrupções podem ser geradas pelo processador, por software ou hardware JCFJ 42 BIOS e Interrupções 43 Sistemas Microcomputadorizados Interrupções via Processador Ocorrem normalmente quando um programa causa certos tipos de erros, ou se um programa é utilizado em modo de descoberta de erros (depuração = debug) Interrupção 00h – Divide Error: esta interrupção é ativada quando o processador realiza uma operação em que o divisor é zero, ou quando ocorre um estouro no quociente Alguns compiladores utilizam ISR próprias para tratar esta interrupção evitando que o programa se interrompa. Interrupções 00h – Single Step e 03h – Breakpoint: são interrupções que são induzidas por programas de depuração Tornam possível a verificação de estados internos do processador. Interrupção 02h – Interrupção não Mascarável: utilizadas por equipamentos externos para indicar que algum problema grave ocorreu – – – – – Procedimentos de falha de alimentação; Erros de paridade na memória; Interrupções do co-processador matemático; Verificações dos canais de entrada/saída; Solicitações de alimentação dos controladores dos discos. JCFJ BIOS e Interrupções 44 Sistemas Microcomputadorizados Interrupções via Hardware Permitem que dispositivos externos chamem a atenção do processador Dependendo do tipo de interrupção o processador deixa o que está fazendo e chama a Rotina de Serviço da Interrupção (ISR) Esta rotina resolve a solicitação do dispositivo O processador continua a realizar o que estava fazendo antes da interrupção Controlador Programável de Interrupções – PIC: faz o interfaceamento entre os pedidos de interrupção de diversos dispositivos externos e o processador PC’s atuais utilizam dois PICs Cada dispositivo externo tem assinalado um IRQ (Interrupt Request) próprio JCFJ BIOS e Interrupções 45 Sistemas Microcomputadorizados Interrupções via Software São interrupções que são geradas por programas Com o Turbo C são em número de 4: int86x(), intdos(), intr() e int86 Prototipadas no arquivo dos.h Em dos.h existe a estrutura que dá acesso aos registradores do processador Através desta estrutura parâmetros podem ser enviados/lidos às/das rotinas de serviço de interrupção struct WORDREGS { unsigned int ax; unsigned int bx; unsigned int cx; unsigned int dx; unsigned int si; unsigned int di; unsigned int cflag; } struct BYTEREGS { unsigned char al,ah; unsigned char bl,bh; unsigned char cl,ch; unsigned char dl,dh; } union REGS { struct WORDREGS x; struct BYTEREGS h; } Os registradores podem ser acessados como sendo de 8 bits (AL, AH) – regs.h.al – ou como sendo de 16 bits (AX,BX) – regs.x.ax Sintaxe da função int86() – int86(int intno, union REGS *inregs, union *outregs) • intno: número da interrupção • inregs: valores armazenados nos registradores passados à ISR • outregs: valores nos registradores recebidos da ISR JCFJ 46 Leituras Sistemas Microcomputadorizados História dos computadores: http://www.clubecobol.com.br/cc_historia_01.asp História dos processadores: http://www.museudocomputador.com.br/encipro.php Museu da CPU: http://www.cpu-museum.de/ Memória Cache: http://www.infowester.com/processadores3.php Interrupções: http://black.rc.unesp.br/orlando/dos.ppt JCFJ Interfaceamento com o 8086 – E/S Isolada 47 Entrada de um byte através de uma porta de E/S – Linguagem Assembler: IN AL,DX DX: registrador de dados contendo o endereço da porta AL: Registrador onde será armazenado o dado de 8 bits que será lido – C: valor=inportb(PORTADDRESS) PORTADDRESS: endereço da porta Valor: variável onde será armazenado o dado de 8 bits que será lido Sistemas Microcomputadorizados Entrada de uma palavra através de uma porta de E/S – Linguagem Assembler: IN AX,DX DX: registrador de dados contendo o endereço da porta AX: Registrador onde será armazenado o dado de 16 bits que será lido – C: valor=inport(PORTADDRESS) PORTADDRESS: endereço da porta Valor: variável onde será armazenado o dado de 16 bits que será lido Saída de um byte através de uma porta de E/S – Linguagem Assembler: OUT DX,AL DX: registrador de dados contendo o endereço da porta AL: Registrador que contém o dado de 8 bits que será escrito – C: outportb(PORTADDRESS,valor) PORTADDRESS: endereço da porta Valor: variável contendo o dado de 8 bits que será escrito Saída de um palavra através de uma porta de E/S – Linguagem Assembler: OUT DX,AX DX: registrador de dados contendo o endereço da porta AL: Registrador que contém o dado de 16 bits que será escrito – C: outport(PORTADDRESS,valor) PORTADDRESS: endereço da porta Valor: variável contendo o dado de 16 bits que será escrito JCFJ Os processadores Pentium 48 Sistemas Microcomputadorizados Termos Usuais: – Transação: Usada para definir um ciclo de barramento Conjunto de fases que se relacionam com uma operação simples sobre o barramento – Agente do Barramento: Dispositivos que residem no barramento do processador O próprio processador, a ponte PCI e os controladores de memória – Agente Prioritário: O dispositivo controlando o reset, a configuração, a inicialização ou a deteção de erros – Agente Requerente: O dispositivo que aciona a transação Busmaster – Agente Endereçado: O dispositivo escravo endereçado pela transação O agente alvo – Agente de Resposta: O dispositivo que providencia uma resposta à transação através dos sinais RS2-RS0 – Agente de Verificação (Snooping agent): Dispositivo que verifica o barramento para manter a coerência dos dados na memória cache – Retrocesso Implícito (Implicit write-back): Quando durante a fase de verificação uma modificação no barramento é percebida uma retrocesso implícito é realizado para manter a coerência dos dados. JCFJ