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