Buscar

Apostila Microprocessadores

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 103 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 103 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 103 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UNIVERSIDADE FEDERAL DO PARÁ 
CENTRO TECNOLÓGICO 
DEPARTAMENTO DE ENGENHARIA ELÉTRICA 
 
 
 
 
 
 
 
 
 
 
 
 
 
CURSO: 
 
 
 
MICROPROCESSADORESMICROPROCESSADORES 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Prof.: Marcelo Barretto Ano: 2000 
Mestre em Engenharia Elétrica - PUC/RJ 
Professor Adjunto IV 
Especialista em Redes Locais de Computadores 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 2 
 
Sumário 
 
 
 
Capítulo 1: Conceitos Básicos 
 
1.1 - Histórico 
1.2 - CPU, Memórias e Dispositivos de Entrada/Saída 
1.3 - Sistema de Barramentos 
1.4 - Arquitetura Padrão de um Microprocessador 
1.5 - Execução de Instruções em Microprocessadores 
1.6 - Algumas Instruções Importantes 
1.7 - Capacidade de Interrupção 
1.8 - Técnicas de Entrada/Saída 
 
Capítulo 2: Os Microprocessadores da INTEL 
 
2.1. O 8086/8088 
2.1.1. Arquitetura 
2.1.2. Características Gerais 
2.1.3. Capacidade de Interrupção 
2.2. O 80286 
2.2.1. Arquitetura e Características 
2.2.2. Diferenças no Conjunto de Instruções 
2.2.3. Implicações no Desempenho de um Microcomputador 
2.3. Os 80386 
 2.3.1 - Diferenças de Arquitetura e Características 
 2.3.2 - Diferenças no Conjunto de Instruções 
 2.3.3 - Versões 80386, 80386SX e 80386SL 
 2.3.4 - Implicações no Desempenho de um Microcomputador 
2.4 - Os i486 
 2.4.1 - Diferenças de Arquitetura e Características 
 2.4.2 - Diferenças na Capacidade de Processamento 
2.5 - Os Pentium, Pentium MMX e PRO 
 2.5.1 - Diferenças de Arquitetura e Características 
2.5.2 - Benchmarks 
2.6 - Os Pentium II 
2.6.1 - Arquitetura e Características 
2.6.2 - Benchmarks 
2.6.3 - Implicações no Desempenho de Desktops e Servidores de Rede 
2.7 – Últimos Microprocessadores da INTEL 
 
Capítulo 3: Características Gerais dos Sistemas de Barramentos 
 
3.1 - Os Barramentos Principais ISA, EISA e MCA 
3.2 - Os Barramentos Locais Secundários VESA e PCI 
3.3 - Os Barramentos Secundários IDE e Enhanced IDE 
3.4 - Os Barramentos Secundários SCSI 
 
Capítulo 4: Suporte ao Desenvolvimento de Software Básico 
 
4.1 - Estrutura de um Programa na Memória 
4.2 - Montadores, Carregadores e Depuradores 
4.3 - Uso de um Depurador de Linguagem Assembly 
 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 3 
Capítulo 5: Características Gerais dos Microprocessadores da MOTOROLA 
 
 5.1 - O 68.000 
 5.1.1 - Arquitetura 
 5.1.2 - Diferenças no Conjunto de Instruções 
 5.1.3 - Capacidade de Interrupção 
 5.2 - O 68.010 
 5.3 - O 68.020 
 5.4 - O 68.030 
 5.5 - O 68.040 
 5.6 – O 68.060 
 5.7 – Os PowerPC (IBM/Apple/Motorola) 
 
Capítulo 6: Introdução aos Microcontroladores 
 
 6.1 - Arquitetura Interna 
 6.2 - O microcontrolador 8052 da INTEL 
 6.3 – O MPC860 da Motorola 
 
Capítulo 7: Introdução às Arquiteturas RISC 
 
 7.1 - Noções da Arquitetura RISC 
 7.2 - Implicações no Desempenho de um Computador 
 
Capítulo 8: Arquiteturas Não Convencionais 
 
 8.1 - Arquiteturas Paralelas 
 8.2 - Arquiteturas MIMD 
 8.3 - Arquiteturas à Passagem de Mensagens 
 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 4 
CAPÍTULO 1: CONCEITOS BÁSICOS 
 
1.1 - HISTÓRICO 
 
 
A história dos microprocessadores é brevemente resumida a seguir com o destaque de algumas 
datas importantes: 
 
Década de 40: è Válvula e Transistor (1948) 
 
Década de 50: è Comercialização do transistor 
 
Década de 60: è Circuitos Integrados SSI ("Small Scale Integrated") 
 
Década de 70: è Circuitos Integrados MSI ("Medium Scale Integrated") 
 
1971: => Circuitos Integrados LSI ("Large Scale Integrated") 
 => INTEL 4004 (CPU do primeiro microcomputador de 4 bits) 
 
1972: => INTEL 8008 (CPU do primeiro microcomputador de 8 bits) 
 
1974: è INTEL 8080 (10 vezes mais rápido que o 8008) 
 => MOTOROLA 6800 
 
1976: => TEXAS 9800 (CPU do primeiro microcomputador de 16 bits) 
 
1977: è MOSTEK 6502 ==> Apple I, II e II plus 
 è ZILOG Z80 ==> TRS-80 
 
1978: => Circuitos Integrados VLSI ("Very Large Scale Integrated") 
 => MOTOROLA 6809 (Melhor CPU de 8 bits do mercado) 
 è INTEL 8088/8086 (29.000 transistores integrados) 
 => Microprocessadores BIT-SLICE (de 2 a 64 bits) 
 
Década de 80: 
 
1980: => MOTOROLA 68.000 (68.000 transistores integrados) 
1981: => MOTOROLA 68.010 
1982: => INTEL 80186/80188 
 => INTEL 80286 (130.000 transistores integrados) 
1984: => MOTOROLA 68.020 
1985: => INTEL 80386 (ou 80386DX, ou i386) 
1986: => MOTOROLA 68.030 
1988: => INTEL 80386SX 
1989: => INTEL i486 (1.200.000 transistores) 
 
 
Década de 90: 
 
 
1991: => INTEL i386SL, i486SX 
ð Microprocessadores com tecnologia RISC 
1992: => INTEL i486DX2/50 e i486DX2/66 
1993: => INTEL Pentium 
1995: => INTEL Pentium Pro 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 5 
1997: è INTEL Pentium II 
 
 
 
Tendências: 
 
ð Máquinas CISC ou Máquinas RISC 
ð Pentium 166 Mhz è Pentium II a 300 Mhz 
ð Máquina de Controle Seqüencial è Máquina de Controle Paralelo 
ð Máquina de Arquitetura SIMD è Máquina de Arquitetura MIMD ("Data-Flow") 
ð Arquiteturas orientadas p/ o HW è Arquiteturas orientadas p/ o SW 
ð Máquinas processando texto è Máquinas processando dados multimídia 
 
 
1.2 - CPU, MEMÓRIAS E DISPOSITIVOS DE ENTRADA/SAÍDA 
 
 
Os próximos parágrafos procuram dar uma idéia da nomenclatura utilizada no restante deste 
documento e introduzir os componentes principais da arquitetura de microcomputadores ou de 
circuitos controlados a microprocessador. 
 
HARDWARE: consiste de circuitos eletrônicos responsáveis pela execução direta de instruções em 
linguagem de máquina: CIs, placa impressa, cabos, fontes de alimentação, etc. 
 
SOFTWARE: consiste de algoritmos e suas representações no computador (programas). 
 
FIRMWARE: consiste de um software embutido em circuitos eletrônicos. 
 
É comum dizer que qualquer operação feita por software pode também ser construída por hardware e 
qualquer instrução executada pelo hardware pode também ser simulada por software. 
 
Um sistema de microcomputador típico é mostrado na figura 1. Basicamente, são três os 
componentes de qualquer sistema controlado por microprocessador ou mesmo de um sistema de 
computação: Unidade Central de Processamento (CPU), Memória e Dispositivos de Entrada/Saída 
(E/S). 
 
A CPU tem finalidade óbvia, a de controlar o sistema como um todo. A memória serve para 
armazenar os dados que serão manipulados e os dispositivos de E/S para a comunicação da 
máquina com o mundo exterior (usuário). 
 
Os vários tipos de Memória são definidos a seguir: 
 
RAM - "Random Access Memory": memória de leitura/escrita, volátil, para armazenamento 
temporário de programas e dados; 
 
RAM Estática - RAM com menor densidade e mais rápida que a RAM dinâmica. Não necessita de 
circuitos adicionais em um microcomputador. 
 
RAM Dinâmica - RAM com maior densidade e mais lenta que a RAM estática. Necessita de 
circuitos adicionais de controle em um microcomputador. 
 
ROM - "Read Only Memory": memória programada quando a pastilha é fabricada, não podendo ser 
modificada. É usada para armazenamento permanente de programas e dados; 
 
PROM - "Programmable ROM": memória programada por um dispositivo programador de PROM. 
Programável uma única vez; 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 6 
 
EPROM - "ErasablePROM": memória que pode ser apagada e reprogramada várias vezes. Apagável 
pela incidência de raios ultra-violeta e programável por um dispositivo programador de EPROM; 
 
EEPROM - "Erasable Electrically PROM": memória EPROM eletricamente modificável, sem 
necessidade de dispositivos externos apagadores ou programadores. 
 
Os Dispositivos de Entrada/Saída são os componentes que viabilizam a interface com o usuário, 
tais como: portas seriais, portas paralelas, conversores análogo-digitais, etc 
 
Estes componentes são ligados através de um sistema de barramentos, o qual será explicado na 
próxima seção. 
 
 
 
 
 
Figura 1 – Sistema de Microcomputador Típico e suas Interfaces 
 
Micropro-
cessador
(CPU)
Memória
EPROM
Memória
RAM
Interfaces de
Controle e
Sensorea-
mento
Interfaces
para
Memória
Secundária
Interfaces de
Interação c/
o Usuário
Barramento de Controle
Barramento de Dados
Barramento de Endereços
Monitor
CD-ROM R/W
Scanner
Imp. Matricial
Modem
Sensor Válvula
HD
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 7 
 
 
1.3 - SISTEMA DE BARRAMENTOS 
 
 
Um sistema de barramentos é definido como um conjunto físico de linhas de sinal que possuem 
funções específicas dentro do sistema. 
 
O sistema de barramentos de um microcomputador é composto de 3 barramentos (ver figura 1) 
independentes em suas funções elétricas: o barramento de endereços, o barramento de dados e o 
barramento de controle. 
 
O Barramento de Endereços é apenas de saída (em relação CPU) e define o caminho de 
comunicação dentro do sistema. 
 
O Barramento de Dados é bidirecional, sendo o meio de comunicação entre os componentes do 
sistema. Na saída de dados da CPU, estes são gerados pelo microprocessador (CPU) e enviados à 
uma unidade que é selecionada pelo barramento de endereços. Na entrada de dados, estes são 
gerados por uma unidade particular e enviados ao microprocessador. 
 
O Barramento de Controle, como o próprio nome indica, envia e recebe os sinais de controle 
necessários à transferência de dados no sistema. Este barramento é composto, basicamente, de 4 
tipos de sinais: leitura de memória ativa, escrita de memória ativa, entrada através de dispositivo 
externo ativo e saída através de dispositivo externo ativo. 
 
 
1.4 - ARQUITETURA PADRÃO DE UM MICROPROCESSADOR 
 
Depois de se examinar um sistema de microcomputador de forma global, nesta seção será 
apresentada a arquitetura padrão de um microprocessador, exibida na figura 2. Destacam-se os 
seguintes blocos: 
 
Registrador de Instrução (RI) - registrador que armazena a instrução sendo executada; 
 
Contador de programa ("Program Counter - PC") - registrador que armazena o endereço de 
memória da próxima instrução a ser executada; 
 
Acumulador - registrador que contém o dado a ser processado; 
 
Apontador de pilha ("Stack Pointer - SP") - registrador que aponta para o endereço de retorno de 
subrotina, sendo este último armazenado em uma pilha na memória; 
 
Unidade Lógica e Aritmética (ULA) - circuito combinacional utilizado para operações lógicas e 
aritméticas envolvendo dois operandos; 
 
Decodificador de instruções - circuito combinacional utilizado para determinar qual a próxima 
instrução a ser executada. Isto é feito a partir do código de operação armazenado previamente no 
Registrador de Instrução; 
 
Unidade de controle - circuito seqüencial interno ao microprocessador utilizado para gerar os 
sinais de controle necessários à execução da instrução previamente decodificada; 
 
Registradores auxiliares - conjunto de registradores de rascunho que podem ser usados em 
conjunto ou separadamente para operações intermediárias, sem que seja necessário o acesso 
sistemático à memória; 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 8 
 
Flags – conjunto de Flip-Flops destinados a guardar as condições resultantes da execução de 
instruções. Tais flags são fundamentais no sentido em que se constituem no único mecanismo que o 
programador Assembly dispõe para desvios de processamento e implementação de algoritmos. 
 
 
 
 
 
Figura 2 – Arquitetura Padrão de um Microprocessador 
 
 
 
1.5 - EXECUÇÃO DE INSTRUÇÕES EM MICROPROCESSADORES 
 
 
Nesta seção serão dadas as explicações básicas para o entendimento dos microprocessadores 
mais comuns do mercado. 
 
Antes de mostrar o procedimento de execução de instruções é necessário detalhar alguns aspectos: 
os flags de condição, o formato das instruções e as operações básicas (de leitura e escrita) de um 
microprocessador. 
 
 
Flags de Condição: 
 
 
Um "flag" é "SETADO", forçando-se o bit de flag para "1" e é "RESETADO", forçando-se o bit de flag 
para "0". Quando uma instrução afeta um flag este é alterado da seguinte maneira: 
 
ZERO: Se o resultado da instrução tem valor 0, 
Buffer de
Dados
Buffer de Endereço
Barramento de
Endereços
PC
SP
Registradores de
Rascunho
Acumulador
Unidade Lógica e
Aritmética (ALU)
Decodifi-
cador
Unidade de
Controle
Código de
Instrução
Informação
Comple-
mentar
RI X
Apontador
de Pilha
Contador de
Programa
R1
Rn
...
Barramento de
Dados
Sinais de
Controle
S
Z
CY
AC
P
Flags
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 9 
Código de Operação 
Código de Operação 
Info. Complementar 
 então Z è 1 
 senão Z è 0; 
 
 
SINAL: Se o bit mais significativo do resultado da operação tem valor 1, 
 então S è 1 
 senão S è 0; 
 
 
PARIDADE: Se a soma dos bits do resultado da operação é 0, 
 então P è 1 (paridade PAR) 
 senão P è 0 (paridade ÍMPAR); 
 
 
CARRY: Se o resultado da instrução provoca um "carry" (na adição) ou um "borrow" (na subtração ou 
comparação), 
 então C è 1 
 senão C è 0; 
 
 
CARRY AUXILIAR: Se a instrução causou um carry do bit 3 para o bit 4, 
 então AC è 1 
 senão AC è 0. 
 
 
Cada microprocessador tem seus próprios bits de flag. Os flags anteriormente mencionados são os 
mais comuns de serem encontrados na maioria dos microprocessadores. 
 
Mostra-se a seguir o formato de instrução, por exemplo, de um microprocessador de 8 bits. A 
partir deste entendimento, pode-se por analogia, entender o formato de instruções de outros 
microprocessadores. Assim, o formato de instrução do INTEL 8085 é utilizado como exemplo básico. 
 
Formato de Instrução e dado no 8085 
 
1. Instruções de um byte 
 
 D7 D6 D5 D4 D3 D2 D1 D0 
 
 
 
 
Obs.: O endereço do primeiro byte das instruções é sempre usado como o endereço de instrução. 
 
2. Instruções de dois bytes 
 
 D7 D6 D5 D4 D3 D2 D1 D0 
 
 
 
 
 
 D7 D6 D5 D4 D3 D2 D1 D0 
 
 
 
 
 
3. Instruções de três bytes 
Ex.: MOV R1,R2 ; R1 <- R2 
Ex.: MVI R,dado ; R <- dado 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 10 
Código de Operação 
Info. Complementar 
Info. Complementar 
 
 D7 D6 D5 D4 D3 D2 D1 D0 
 
 
 
 
 
 D7 D6 D5 D4 D3 D2 D1 D0 
 
 
 
 
 
 D7 D6 D5 D4 D3 D2 D1 D0 
 
 
 
 
 
 
 
Nas seções anteriores foram mostrados os componentes básicos de um circuito controlado a 
microprocessador, a arquitetura padrão dos microprocessadores e a CPU do sistema. Isto era 
indispensável para a compreensão do capítulo e do curso como um todo. 
 
Ainda com o intuito de mostrar como instruções são executadas em microprocessadores, também 
se faz necessário explicar as operações básicas de um computador ou circuito controlado a 
microprocessador.Estas, são as operações de leitura de memória e escrita na memória. 
 
Operações Básicas de um Computador: 
 
 
Operação de Leitura: 
 
 
 1. A memória recebe o endereço e a solicitação de leitura; 
 
 2. A memória localiza a célula decodificando o endereço; 
 
 3. Operação de leitura propriamente dita; 
 
 4. Intervalo em que a memória não é acessível por razões técnicas ("Descanso"). 
 
 
 Ciclo de Acesso à Memória: fases 1, 2 e 3 
 
 Ciclo da Memória: fases 1, 2, 3 e 4 
 
 
Operação de Escrita: 
 
 
 1. A memória recebe o endereço, o dado e uma solicitação de escrita; 
 
 2. A memória localiza a célula decodificando o endereço; 
 
 3. Operação de escrita propriamente dita; 
 
Ex.: LXI Rp, dado 16 ; Rh <- (byte3) 
 ; Rl <- (byte 2)
 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 11 
 4. ("Descanso"). 
 
Obs.: A operação de leitura é muito mais freqüente que a operação de escrita. 
 
 
Ciclo de Instrução 
 
 
Uma instrução é executada por um microprocessador durante um intervalo de tempo particular à 
instrução, chamado, CICLO DE INSTRUÇÃO. Um ciclo de instrução é composto de vários ciclos de 
máquina que variam de acordo com a instrução. Cada ciclo de máquina, por sua vez tem a duração 
de vários períodos de relógio. Em seguida, o ciclo de instrução é detalhado. 
 
O formato da instrução em linguagem de máquina é mostrado a seguir. Com base neste formato 
pode-se descrever textualmente o ciclo de instrução. 
 
 
 
Linguagem de Máquina ==> 
 
 
CICLO DE INSTRUÇÃO: 
 
 1. BUSCA 
 
 a) Envio de um endereço para a memória e execução de uma leitura; 
 
 b) Incremento do registrador de endereço de instrução; 
 
 2. EXECUÇÃO 
 
 a) Decodificação do código de operação; 
 
 b) Execução da instrução; 
 
 3. VOLTA PARA FASE 1 
 
 --> Pode haver desvio: 
 - Incondicional: o valor do registro de endereço de instrução é alterado; 
 
 - Condicional: se a condição é satisfeita, a seqüência linear é interrompida. 
 
 
É importante ressaltar que cada ciclo de instrução é composto por vários ciclos de máquina.. 
 
A figura 3 procura ilustrar o procedimento de execução de um pequeno programa, passo-a-passo, já 
armazenado na memória e a figura 4 mostra, sob a forma de diagrama de tempo, a execução da 
instrução LDA 0420, com todos os seus ciclos de máquina e períodos de relógio. 
Código de Operação Informação Complementar 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 12 
 
 
 
 
Figura 3 – Execução de Instruções por um Microprocessador Passo-a-Passo 
Porta de
Entrada 01
Acumulador
Registrador de
Instrução
Porta de
Saída 10
Microprocessador
5
5
2
43
1
6
8
12
14
7
9
13
15
Caracter "A" do teclado
16
10 11
16 16
Caracter "A" para o
monitor de Vídeo
Memória de Dados
Endereço Conteúdo
2000 A
2001
2002
2003
Memória de Programa
Endereço Conteúdo
0100 IN
0101 01
0102 STA
0103 00
0104 20
0105 OUT
0106 10
0107 ...
5
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 13 
 
 
 
 
 
 
 
Figura 4 – Execução da Instrução LDA 0420 
 
 
 
 
1.6 - ALGUMAS INSTRUÇÕES IMPORTANTES 
 
 
Normalmente, pode-se separar as instruções de linguagem Assembly de um microprocessador em 
grupos. Tais grupos podem ser generalizados para a maioria dos microprocessadores com algumas 
pequenas diferenças. A título de exemplo, os grupos de instruções no 8085 são mostrados abaixo. 
 
Ciclo
Busca Exec. Busca Exec.
Ciclo M1 Ciclo M2
RI <- LDA
1001
->1002
RI <- 04Não
Usado
Não
Usado
1002
->1003
PC
Oper.
Fase Busca Exec. Busca Exec.
Ciclo M3 Ciclo M4
RI <- 20
1003
Bar.
Dados
<-(0420)
Não
Usado
A <-
(0420)
1004 1004
Busca do
Código de
Operação da
Instrução e
Transferência
deste código
para o
Registrador de
Instrução (RI)
Busca do
primeiro byte do
endereço e
transferência
para dentro da
parte de
endereço do RI,
byte de menor
ordem
Busca do
segundo byte
do endereço e
transferência
para dentro da
parte de
endereço do RI,
byte de maior
ordem
A parte de
endereço do RI é
depositada no
barramento de
endereços
Acumulador
recebe o conteúdo
da posição de
memória, cujo
endereço é 0420
RI
T1 T2 T3 T4 T5 T1 T2 T3 T4 T5 T1 T2 T3 T4 T5 T1 T2 T3 T4 T5
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 14 
 
 
Grupo de Transferência de Dados 
 
 Move dados entre registradores ou entre locações de memória e registradores; 
 
 Ex.: "MOVEs", "LOADs", "STOREs" e EXCHANGE; 
 
Grupo Aritmético 
 
"ADDs", "SUBTRACTs", "INCREMENTs" ou DECREMENTs" dados nos registradores ou na 
memória; 
 
Grupo Lógico 
 
"ANDs", "ORs", "XO Rs", "COMPAREs", "ROTATEs" ou "COMPLEMENTs" dados entre 
registradores ou entre locações de memória e registradores; 
 
Grupo de Salto 
 
"JUMPs", "CALLs" e "RETs" condicionais ou incondicionais; 
 
Grupo de Instruções de Pilha, E/S e Controle de Máquina 
 
Inclui instruções de manutenção de pilha, leitura escrita na/da memória, "seta" ou lê máscaras de 
interrupção, seta ou limpa "FLAGs" 
 
 
1.7 – CAPACIDADE DE INTERRUPÇÃO 
 
 
Uma das técnicas de Entrada/Saída de dados mais utilizadas na atualidade é a Interrupção. Seu uso 
aplica-se tanto em computadores de um modo geral, como também no ambiente de automação 
industrial. 
 
INTERRUPÇÃO (IRQ) é um sinal de hardware enviado por um dispositivo periférico necessitando de 
imediata atenção da CPU. A utilização desta técnica, forçosamente, envolve sinais de hardware. 
 
É comum em softwares de apoio tradicionais, como o Norton Utilities, observar a distinção entre 
Interrupções por Hardware e por Software. Segundo nomenclatura da INTEL, a diferença básica é que 
na Interrupção por Hardware , o endereço de salto, para o qual o microprocessador irá desviar o 
processamento é predefinido pelo hardware do microprocessador, enquanto que na Interrupção por 
Software , este endereço de salto pode ser alterado pelo usuário programador Assembly. 
 
Um outro conceito relacionado as interrupções também merece ser comentado. É o mascaramento 
de Interrupções. Existem as Interrupções Mascaráveis e as Interrupções Não Mascaráveis. 
Quando as Interrupções são Mascaráveis o processador tem a capacidade de não aceitar o pedido 
de interrupção do periférico, deixando-o pendente, de tal forma que possa atendê-lo um tempo 
depois. Já nas Interrupções Não Mascaráveis, o processador não pode fazer isso, sendo obrigado a 
atender imediatamente a solicitação de interrupção do periférico. 
 
A fim de exemplificar estes conceitos e subsidiar as explicações sobre o mecanismo de Interrupção, 
é fornecida a seguir a sintaxe e a semântica de uma instrução básica para o entendimento deste 
mecanismo, a instrução RESTART. 
 
 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 15 
 
 
Instrução RST n (Restart) 
 
RST é uma instrução CALL de propósito especial. RST "push" ou "empurra" bytes do Program 
Counter (PC) sobre a pilha e então faz a CPU saltar para um dentre vários endereços 
predeterminados. 
 
 ((SP) - 1) <-- (PCH) 
 ((SP) - 2) <-- (PCL) 
 (SP) <-- (SP) - 2 
 (PC) <-- 8 * (NNN) 
 
NNN - Número binário entre 000 e 111 (entre 0 e 7 em decimal) 
SP - Stack Pointer 
PCH - Byte mais significativo do Program Counter 
PCL - Byte menos significativo do Program CounterEx.: Endereços de salto possíveis no INTEL 8085: 
 
 
HEXADECIMAL DECIMAL RST 
0000 0 0 
0008 8 1 
0010 16 2 
0018 24 3 
0020 32 4 
0024 36 TRAP 
0028 40 5 
002C 44 5.5 
0030 48 6 
0034 52 6.5 
0038 56 7 
003C 60 7.5 
 
 
 
Interrupções por Hardware: 
 
Ex.: O 8085 inclui 4 sinais de entrada (hardware) que geram internamente instruções RST: 
 
RST 5.5, RST 6.5 e RST 7.5 (Mascaráveis) 
TRAP (não Mascarável) 
 
 
Interrupções por Software: 
 
Quando um dispositivo de E/S pede o serviço de interrupção e a IRQ está habilitada pelo sistema de 
interrupção do processador, este reconhece o pedido e prepara suas linhas de dados para aceitar 
qualquer instrução de um byte do dispositivo. RST é geralmente a instrução escolhida, pois é uma 
instrução CALL de propósito especial que estabelece o retorno ao programa principal. 
 
 
Ex.: O 8085 possui 1 entrada e 1 saída que implementa este tipo de interrupção 
 
INTR – pino de entrada 
INTA – pino de saída 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 16 
 
 
Para o processador não se confundir, ao receber dois pedidos de interrupção simultâneos, é provido 
um mecanismo de prioridade que estabelece uma ordem no atendimento destes pedidos. 
 
 
 
Prioridade das Interrupções no 8085 
 
 
NOME PRIORIDADE ENDEREÇO DE SALTO (1) TIPO DE "TRIGGER"³ 
TRAP 1 0024H Pulso Positivo amostrado 
até Alto Nível 
RST 7.5 2 003CH Pulso Positivo "Latched" 
RST 6.5 3 0034H Sensível a Nível (Alto) 
RST 5.5 4 002CH Sensível a Nível (Alto) 
INTR 5 (2) Sensível a Nível (Alto) 
 
 
(1) – O processador coloca o conteúdo do Program Counter sobre a pilha, antes de saltar para o 
endereço indicado 
 
(2) - Depende da Instrução fornecida a CPU quando a Interrupção é reconhecida 
 
 
A figura 5 ilustra o mecanismo de Interrupção no 8085. A figura 6 mostra o mesmo para o ZILOG Z80 
e a figura 7 exibe os circuitos integrados típicos dos ambientes INTEL e ZILOG. É importante 
ressaltar a diferença entre os mecanismos de prioridade de interrupção das duas empresas. 
 
 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 17 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 5 – Mecanismo de Interrupção no INTEL 8085 
 
INTEL
8085
Dispositivo
Periférico
1
2
3
INTR
INTA
RST nn
6001
6002
6003
0038 C3 (JMP)
003A 80
Ex.: RST 7
INTR
(SP) 02
60
1
3
0039 00
4
5
6
Pilha
Subrotina de Serviço de
Interrupção
Programa sendo executado
8000 . . .
RET
. . .
Endereço Dado
2
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 18 
 
 
 
 
 
 
 
Figura 6 – Mecanismo de Interrupção (Modo 2) no ZILOG Z80 
 
 
 
ZILOG
Z80
Dispositivo
Periférico
1
2
___
INT
____
INTA
4002
4003
4004
(SP) 04
40
2
5
4
1
Pilha
Subrotina de Serviço de
Interrupção
Programa sendo executado
8003
8005 60
8004 50
8006
6050 . . .
60XX RETI
. . .
Tabela de Endereços de
Interrupção
___
INT
I 80Registrador da CPU
80 04
36
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 19 
 
 
 
Figura 7 – Mecanismos de Prioridade de Interrupção ZILOG e INTEL 
 
 
8259 – Controlador de Prioridade de Interrupção (PIC) 
8257 – Controlador de DMA Programável (PDC) 
8272 – Controlador de Disco Flexível 
8274 – Controlador Serial Multiprotocolo 
8273 – Temporizador Programável 
 
 
 
1.8 – TÉCNICAS DE ENTRADA E SAÍDA 
 
 
Z80
CPU
PIO DMA
8085
CPU
CTC SIO
8274 8253
8259
(PIC)
8257 8272
Mecanismo
"Daisy Chain"
Prioridade Fixa
Prioridade
Controlada
Barramentos
Barramentos
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 20 
Além da técnica de Interrupção detalhada na seção anterior, existem duas outras técnicas, também 
muito utilizadas em sistemas de computação de um modo geral. São estas: "Polling" e Acesso 
Direto à Memória (ou DMA – “Direct Access Memory”). 
 
"POLLING": É uma técnica de Entrada/Saída de dados onde a CPU, explicitamente, consulta o 
periférico com o objetivo de saber se o mesmo possui dados para transmitir ou se está livre para os 
receber. Esta técnica não envolve sinais de hardware e pode ser implementada por software; 
 
ACESSO DIRETO À MEMÓRIA: É uma técnica de Entrada/Saída de dados onde a CPU não 
participa do processo de transferência de dados, exceto no seu início e após o seu término. Um 
outro dispositivo periférico é necessário, o chamado "Controlador de DMA", para assumir o controle 
dos barramentos do sistema e controlar as transferências de dados. 
 
Na maior parte dos casos, o uso desta técnica obriga o uso combinado das anteriores para que o 
processo de transferência de dados seja iniciado e terminado corretamente. A figura 8 ilustra passo-
a-passo o procedimento de transferência de dados para a ou da memória, sem interferência da CPU. 
 
 
 
 
Figura 8 – Entrada/Saída por Acesso Direto à Memória 
 
 
1 – DRQ – “Data Request”: Solicitação de Acesso Direto à Memória feito pelo dispositivo periférico ao 
Controlador de DMA (CDMA); 
2 – HOLD – “Hold Request: Solicitação de controle de barramentos feito pelo CDMA ao processador; 
3 – HLDA – “Hold Acknowledgement” – Resposta do processador ao CDMA, avisando que à partir 
daquele momento, este poderá assumir o controle temporário dos barramentos para a 
transferência de dados; 
4 – DACK – “Data Acknowledgement” – Resposta do CDMA ao dispositivo periférico, avisando que 
assumiu o controle dos barramentos e a transferência de dados poderá se iniciar. 
 
A programação do CDMA consiste basicamente de informar o mesmo sobre o endereço inicial do 
bloco de bytes a ser transferido, o sentido da transferência e o tamanho de bloco ou o endereço final. 
Depois que os comandos são fornecidos ao dispositivo periférico o processo continua, sem 
CPU
Memória Disp. 0
CDMA Disp. 3 Disp. 2
Barramentos
Disp. 1
1
2
3
4
Driver Óptico
Dados
DRQ
DACK
HOLD
HOLDA
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 21 
interferência da CPU. Após a transferência, o sinal DRQ é retirado, consequentemente, todos os 
outros sinais são retirados e a CPU reassume o controle dos barramentos. 
 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 22 
 
CAPÍTULO 2: OS MICROPROCESSADORES DA INTEL 
 
2.1 – O 8086/8088 
 
A figura 9 exibe o Diagrama em Blocos da Arquitetura do 8086. 
2.1.1 – Arquitetura 
 
 
 
 
Figura 9 – Arquitetura do 8086 
 
 
Fonte: "The 8086 Book", Rector R. e Alexy G. - OSBORNE/McGraw-Hill 
 
 
 
 
 
CS
DS
SS
ES
0000
0000
0000
0000
IP
SP
BH BL
DH DL
CH CL
AH AL
BP
SI
DI
ALU (Unidade Lógica e
Aritmética)
Unidade de Controle
Status
Registrador de Instrução
1
2
3
4
5
6
Unidade de Controle de
Barramento
Unidade de Execução Unidade de Interface de
Barramento
Fila de Código Objeto
de Instrução
0000
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 23 
Registradores do 8086/8088 
 
 
Registrador Finalidade 
AX = AH + AL Acumulador 
BX = BH + BL Base (2º acumulador) 
CX = CH + CL Contador (usadoem instruções de múltiplas interações) 
DX = DH + DL Dado (algumas instruções movem dados de uma porta de E/S para a posição 
de memória endereçada por DX) 
SP Apontador de Pilha 
BP Apontador de Base 
SI Índice Fonte 
DI Índice Destino 
IP Apontador de Instrução 
Flags H + Flags L Flags 
CS Segmento de Código 
DS Segmento de Dados 
SS Segmento de Pilha 
ES Segmento Extra 
 
 
Observações: 
 
1. O registrador SP está estreitamente ligado ao ES, em função das operações relacionadas à 
manutenção da pilha; 
2. O registrador IP está estreitamente ligado ao CS, em função das operações relacionadas à 
execução de instruções; 
3. O endereço fonte de um String de dados é obtido à partir de SI + DS; 
4. O endereço destino de um String de dados é obtido à partir de DI + ES. 
 
 
2.1.2 – Características Gerais 
 
 
Capacidade de Endereçamento: 
 
20 bits de endereçamento => 1.0 Megabytes ou 512 Kwords 
 
Operações com: Bit, Byte, Word e Bloco 
 
Organização da Memória: 
 
a) Física: => 2 x 512 Kbytes. End. Ímpar (D7 – D0) 
End. Par (D15-D8) 
 
b) Endereçamento relativo à base de endereços de Registradores de Segmento: Code (CS), 
Data (DS), Stack (SS) e Extra (ES). 
 
 
Endereço Registrador Conteúdo 
End. da Memória de Programa IP 0 M M M M 
 CS N N N N 0 
 (IP+CS) Endereço Final è P P P P M 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 24 
 
End. da Memória de Dados XX 0 M M M M 
 DS N N N N 0 
 (XX+DS) Endereço Final è D D D D M 
 
End. da Memória de Pilha XX 0 M M M M 
 SS N N N N 0 
 (XX+SS) Endereço Final è S S S S M 
 
End. da Memória Extra XX 0 M M M M 
 ES N N N N 0 
 (XX+ES) Endereço Final è D D D D M 
 
 
Observações: 
 
1. Cada registrador de segmento (16 bits) identifica o início de um segmento 64 Kbytes. Como são 
4 (quatro) os registradores de segmento, pode-se selecionar apenas um de 4 segmentos de 64 
Kbytes de cada vez. Isto significa que de 1 MBytes, têm-se apenas 1 de 16 possíveis 
segmentos endereçáveis diretamente (1 MBytes / 64 Kbytes = 16); 
2. XX pode ser um registrador qualquer da CPU, como por exemplo: IP, quantidade de 16 bits, DI ou 
SI, BX, BP, etc. 
 
c) Posições de FFFF0-FFFFF (32 Bytes) reservadas para “Reset” => Após o “Reset”, a CPU 
executa sempre a instrução contida no endereço FFFFF0, onde normalmente existe um JUMP. 
 
d) Posições de 00000-003FF (1024 Bytes) reservadas para operações com Interrupção => 256 
possíveis vetores de interrupção; 
 
 
Endereçamento de Entrada/Saída 
 
 - 256 dispositivos diretamente; 
 - 64 Kbytes indiretamente 
 
Tamanho dos Registradores Internos : 16 bits 
 
Tamanho do Barramento de Dados: 16 bits 
 
Coprocessador matemático: 8087 
 
 
2.1.3 – Capacidade de Interrupção 
 
 
1. Interrupções Predefinidas (requisitadas por hardware ou software) 
 
 De 0 a 31: IRQ 0 è Divisão por Zero 
 IRQ 1 è Passo-a-Passo 
 IRQ 2 è NMI (“Not Maskable Interrupt”) 
 . . . 
 
2. Interrupções de Hardware (definidas pelo usuário) 
 
 De 32 a 255: Solicitadas via pino INTR da CPU 
 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 25 
Observação: O dispositivo solicitante deve colocar em D0-D7 (8 bits menos significativos do 
barramento de dados) o Número de Interrupção para a CPU. A CPU multiplica este número por 4 e 
com o resultado, endereça a posição de memória contendo o vetor correspondente na TABELA DE 
VETORES DE INTERRUPÇÃO. A figura 10 ilustra estes conceitos. 
 
 
 
 
Figura 10 – Busca da Rotina de Serviço de Interrupção no 8086 
 
 
Dos 4 bytes do VETOR DE INTERRUPÇÃO, os 2 primeiros formam o conteúdo do IP (“Instruction 
Pointer”) e 2 bytes restantes formam o conteúdo do CS - Registrador de Segmento de Código (“Code 
Segment”). Desta maneira é formado o Endereço de Início da Rotina de Serviço de Interrupção. 
 
3. Interrupções de Software (definidas pelo usuário) 
 
 De 32 a 255: Solicitadas via instrução "INT nn" 
 
 nn = Número da Interrupção a ser executada 
 
Para finalizar este item deve-se comentar a posição do microprocessador 8088 em relação ao 8086. 
 
Sobre o 8088 
 
00000
IP
CS
Rotina de Serviço
de Interrupção
003FFNúmero de
Interrupção
x 4
IRET
1a. Instrução
Tabela de
Vetores de
Interrupção
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 26 
Uma das únicas diferenças entre os dois processadores é a de que o barramento de dados no 8088 
possui um comprimento de 8 bits (o barramento do 8086 é de 16 bits). Este fato possibilitou aos 
fabricantes de microcomputadores o aproveitamento quase total dos circuitos periféricos do 8080 
(mais conhecidos e mais baratos), reduzindo sobremaneira o custo final da máquina. Como o 8086, 
efetivamente, não era utilizado como um microprocessador de 16 bits, propagandeou-se em larga 
escala que microcomputadores com CPU 8088 possuíam o mesmo desempenho e mais baixo custo 
do que máquinas com CPU 8086. A verdade é que o momento era de transição para uma CPU mais 
poderosa e os fabricantes de placas ainda não haviam tomado uma posição definitiva à respeito. 
 
Assim, o 8088 é arquiteturalmente (rodava os mesmos programas) igual ao 8086, com a diferença 
principal apenas no comprimento do barramento de dados. 
 
 
Sobre o par 80186/80188 
 
Após os microprocessadores 8086 e 8088, a INTEL lançou o processador 80186, com desempenho 
cerca de 30% superior ao 8086. O 80186 era um 8086 com novos blocos de hardware internos. Tal 
microprocessador encontrou sua utilização na área de controle de processos, gerenciamento de 
terminais e automação industrial. Entretanto, não fez sucesso comercial na área de 
microinformática, pois suas melhorias em relação a software eram muito poucas. 
 
A exemplo do par 8086/8088, uma CPU 80188 também foi produzida pela INTEL, com as mesmas 
características do 80186, à exceção do barramento de dados, dimensionado para 8 bits 
 
 
2.2 – O 80286 
 
 
2.2.1 – Arquitetura e Características 
 
O microprocessador 80286 surgiu com duas grandes novidades para a área de microinformática. A 
primeira foi que o barramento de endereços da pastilha cresceu para 24 bits (não mais os 20 bits do 
8086 e 80186), o que implica em uma capacidade de endereçamento de 16 MBytes. A segunda foi a 
introdução de dois modos de funcionamento da CPU: o MODO REAL (compatível com o 8086) e o 
MODO PROTEGIDO (específico para o 286). Uma terceira inovação, o suporte a memória virtual (na 
época, não totalmente explorada), permitia o endereçamento de até 1 Gigabytes. Os itens que se 
seguem procuram fornecer mais detalhes sobre esta CPU. 
 
Modo Real: Neste modo, o 80286 é compatível em software (a nível de código objeto) com o 
8086/8088. O fato de emular o 8086/8088 significa dizer que a memória a ser utilizada pelo programa 
não pode ultrapassar 1.0 MBytes, consequentemente, não utilizando toda a capacidade de 
endereçamento disponível. Sendo a CPU mais evoluída em hardware e permitindo a utilização de 
osciladores a cristal de freqüências mais altas, sem dúvida máquinas com esta CPU, mesmo 
operando neste modo, possuíam maior desempenho que os famosos XTs. 
 
Modo Protegido: Neste modo, o 80286, também pode rodar programas 8086/8088 e além disso, 
rodar programas escritos especificamente com o código fonte 80286. Neste modo, o 80286 
automaticamente mapea 1.0 Gigabytes de endereços virtuais por tarefa dentro de um espaço de 
endereço real de 16.0 Megabytes. No modo protegido, o 80286 provê proteção de memória para 
isolar o sistema operacional e assegurar a privacidade de cada tarefa sendo executada. Assim, o 
80286, foi especialmente otimizadopara suportar sistemas multitarefa e multiusuário. 
 
 
 
 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 27 
 
 
Registradores do 80286 
 
 
Registrador Finalidade 
AX = AH + AL Acumulador 
BX = BH + BL Base (2º acumulador) 
CX = CH + CL Contador (usado em instruções de múltiplas interações) 
DX = DH + DL Dado (algumas instruções movem dados de uma porta de E/S e a posição de 
memória endereçada por DX) 
SP Apontador de Pilha 
BP Apontador de Base 
SI Índice Fonte 
DI Índice Destino 
IP Apontador de Instrução 
Flags H + Flags L Flags 
CS Segmento de Código 
DS Segmento de Dados 
SS Segmento de Pilha 
ES Segmento Extra 
 
 
Observação: Exatamente os mesmos registradores do 8086 
 
 
Capacidade de Endereçamento: 
 
 24 bits de endereço è 16.0 MBytes 
 
Operações com: byte, word, double word, quad word, BCD, ASCII, apontador e ponto flutuante; 
 
Relógio: 80286-4 ==> 4.0 Mhz 
 80286-6 ==> 6.0 Mhz 
 80286 ==> 8.0 Mhz 
 80286x ==> 12.0 Mhz e 16 Mhz 
 
Organização de Memória: 
 
a) física è 2 x 8.0 MBytes; 
 
b) Endereçamento: 
 
 31 16 15 0 
Seletor de Segmento Offset 
 
 
O seletor de segmento (16 bits) especifica um índice dentro de uma tabela em memória residente 
cujo conteúdo é um endereço base de 24 bits. O endereço real de memória é obtido com a soma 
deste endereço base (24 bits) mais o offset (16 bits), totalizando 24 bits de endereço. 
 
c) Posições de 00000-003FF (1024 bytes è 256 possíveis vetores de interrupção) reservadas, 
como no 8086, para operações com interrupção, no modo real; 
 
d) Posições de FFFF0-FFFFF reservadas para "reset", no modo real; 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 28 
 
Endereçamento de Entrada/Saída: 
 
 - 256 dispositivos diretamente; 
 - 64 Kbytes indiretamente 
 
Tamanho dos Registradores Internos: 16 bits 
 
Tamanho do Barramento de Dados: 16 bits 
 
Coprocessador matemático: 80287 
 
Capacidade de Processamento de Instruções: aprox. 1.5 MIPS 
 (80286 a 8 Mhz) 
 
 
2.2.2 - Diferenças no Conjunto de Instruções 
 
 
O conjunto de instruções do 80286 é dividido em sete categorias: transferência de dados, 
aritméticas, deslocamento/lógicas, manipulação de strings, controle de transferência, de alto nível e 
de controle de processador. 
 
Entre as instruções adicionais podem ser citadas as seguintes: 
 
PUSHA è salva o conteúdo da totalidade dos registradores; 
POPA è restaura o conteúdo da totalidade dos registradores; 
INS è entra string de caracteres; 
OUTS è sai string de caracteres; 
ENTER è chama procedure; 
LEAVE è libera procedure; 
e mais 15 instruções que somente podem ser executadas no modo protegido; 
 
 
2.2.3 – Implicações no Desempenho de um Microcomputador 
 
 
Sistemas de microcomputador baseados no 80286 foram os primeiros sistemas com capacidade 
para rodar sistemas operacionais de rede multiusuário e/ou multitarefa, na época, por exemplo, o 
Netware 2.x da Novell, o qual era escrito em C e Assembly 80286. Tais sistemas, paulatinamente, 
passaram à função de computador pessoal (“desktop”) e não mais a de servidor. 
 
 
2.3 - OS 80386 
 
 
2.3.1 - Diferenças de Arquitetura e Características 
 
 
O microprocessador 80386 é compatível em software com o 8086. A INTEL optou por manter esta 
compatibilidade para aproveitar toda a enorme base de software escrita para os 8086 e 80286. Sendo 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 29 
assim, o 386 executa a maioria dos programas escritos para o 8086 e 80286, simplesmente por que 
este emula estas CPUs, não fazendo uso de todas as suas capacidades. 
 
Primeiro microprocessador de 32 bits da INTEL, o 80386 trouxe um novo modo de operação, em 
adição aos dois modos do 80286 (Real e Protegido), o modo Virtual. O microprocessador abordado 
nos próximos parágrafos é o 80386 mais potente da família, que na literatura é chamado de 
80386DX, ou 80386 "Full" ou ainda, como a INTEL o denominou, simplesmente, 80386. 
 
A figura 11 mostra os registradores do 80386. 
 
 
 
 
Figura 11 – Registradores do 80386 
 
 
 
No MODO REAL, o 80386 é compatível em software (a nível de código objeto) com o 8086/8088, 
inclusive com a mesma limitação de memória (1.0 MBytes). Sendo a CPU mais evoluída em 
hardware (p.e. registradores de 32 bits) e permitindo a utilização de osciladores a cristal de 
freqüências ainda mais altas que os 80286, sem dúvida, máquinas com esta CPU possuem 
desempenho bem maior que os 286. Assim, neste modo, o mecanismo de endereçamento, o 
tamanho de memória e a manipulação de interrupções são todos idênticos ao modo real do 80286. 
As instruções 80386 também podem ser utilizadas neste modo. 
 
No MODO PROTEGIDO, o 80386, se comporta exatamente como no modo de mesmo nome do 
80286, sendo que endereçará 4.0 Gigabytes de memória real (ao invés dos 16.0 MBytes do 80286) 
e 64 Terabytes de memória virtual. Neste modo, o mecanismo de endereçamento também é diferente 
daquele utilizado no 80286. Enquanto no 80286 o endereço base é de 24 bits (aos quais são 
adicionados 16 bits de offset), no 80386 este endereço é de 32 bits (aos quais são adicionados 16 
ou 32 bits de offset). 
 
Quando operando no modo protegido, o 80386 pode fazer uso de uma técnica chamada de 
SEGMENTAÇÃO. Esta técnica organiza a memória em módulos lógicos chamados segmentos. Este 
modo de gerenciamento de memória provém a base para a proteção de segmentos de memória. Por 
AH CS
SI
DI
BP
SP
AL
BH BL
CH CL
DH DL
031 715
SS
DS
ES
FS
GS
Código
Pilha
Dados
IP
FLAGS
EIP
EFlags
015
Registradores Gerais de
Endereço e Dados
Apontador de Instrução
e Registrador de Flags
Registradores Seletores
de Segmento
EAX
EBX
ECX
EDX
ESI
EDI
EBP
ESP
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 30 
exemplo, uma tabela do sistema operacional pode residir em um segmento e, como tal, deve ser 
protegido da interferência de usuários não privilegiados, os quais poderiam "derrubar" o sistema. 
 
Uma outra técnica útil de gerenciamento de memória para sistemas operacionais multitarefa em 
memória virtual é a técnica chamada de PAGINAÇÃO. Independentemente da segmentação, a qual 
modulariza programas e dados em segmentos de comprimento variável, a paginação divide 
programas em páginas uniformes múltiplas. Dessa forma, somente um pequeno número de páginas 
de cada tarefa precisa estar na memória em um dado instante. A paginação é útil para o 
gerenciamento da memória física do sistema. 
 
O 80386 possui 4 níveis de proteção otimizados para suportar as necessidades de sistemas 
operacionais multitarefa, os quais devem proteger e isolar programas de usuários, uns dos outros, e 
programas do próprio sistema operacional, dos usuários. Tais níveis de proteção se constituem, em 
outras palavras, em um sistema de privilégio hierárquico de 4 níveis: 
 
PL=0 (mais privilegiado) - Núcleo do sistema operacional; 
PL=1 - Serviços do Sistema Operacional; 
PL=2 - Extensões do Sistema Operacional e 
PL=3 - Aplicações. 
 
Quando operando no MODO VIRTUAL, o 80386 permite a execução simultânea de aplicações 8086, 
sistemas operacionais 8086 e suas aplicações, aplicações 80286 e, ainda, aplicações 80386. 
Assim, em um computador 386 multiusuário, uma pessoa pode estar rodando uma planilha DOS, 
enquanto outra usa o DOS e uma terceira roda múltiplos utilitários e aplicativos UNIX. 
 
A MEMÓRIA CACHE é um bloco de memória RAM (do tipo estática) que, tendotempo de acesso 
menor que a memória principal (do tipo dinâmica), pode ser lido muito mais rapidamente. Assim, 
antes de se executar um programa que está na memória principal, a região contendo o programa é 
transferida para a memória cache e só então o programa é executado. Isto reduz drasticamente o 
tempo de acesso à RAM e aumenta a velocidade de execução dos programas. No 80386, o uso de 
memória cache era opcional, isto é, apenas algumas máquinas (dependendo do fabricante) incluíam 
uma pastilha controladora de memória cache, o 82385 (gerenciavam até 256 Kbytes), e sua inclusão 
implicava em um aumento da placa mãe. Esta pastilha só era encontrada nas últimas versões 
micros 386. 
 
 
Características Principais: 
 
Capacidade de Endereçamento: 
 
 32 bits de endereço è 4.0 Gigabytes 
 
Operações com: bit, campos de bit, string de bits, byte, word, double word, quad word, BCD, ASCII, 
apontador e ponto flutuante; 
 
Relógio: 80386-12 è 12.5 Mhz 
 80386-16 è 16.0 Mhz 
 80386x è 20.0 Mhz 
 80386x è 33.0 Mhz 
 Am386-40 è 40.0 Mhz 
 
Organização de Memória: 
 
a) Física: è 2 x 2.0 Gigabytes; 
è 4 x 1.0 Gigawords; 
 è 8 x 0.5 Gigalongwords 
 
b) Endereçamento: 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 31 
 
 3 espaços de endereço ==> lógico, linear e físico 
 
 Endereçamento Lógico (ou Virtual): Consiste de um segmento seletor (14 bits) e de um 
offset (soma de componentes de endereçamento: BASE, INDEX, DISPLACEMENT => 32 bits), 
totalizando 46 bits de endereçamento, consequentemente, um espaço de 64 Terabytes; 
 
 Endereçamento Linear: A unidade de segmentação translaciona o endereço lógico para 
um endereço linear de 32 bits, implicando em 4.0 Gigabytes; 
 
 Endereçamento Físico: Se a unidade de paginação não está habilitada, o endereço linear 
de 32 bits corresponde a um endereço físico, também de 4.0 Gigabytes. 
 
c) Posições de 00000000-000003FF (1024 bytes è 256 possíveis vetores de interrupção) 
reservadas, como no 8086 e 80286, para operações com interrupção, no modo real; 
 
d) Posições de FFFFFFF0-FFFFFFFF reservadas para "reset", no modo real; 
 
Endereçamento de Entrada/Saída: 
 
 - 256 dispositivos diretamente, como nos 8086 e 80286; 
 - 64 Kbytes indiretamente 
 
Tamanho dos Registradores Internos: 32 bits 
 
Tamanho do Barramento de Dados: 32 bits 
 
Coprocessador matemático: 80387 
 
Capacidade de Processamento de Instruções: aprox. 4.0 a 10.0 MIPS 
 (80386 32 bits em 16, 20 e 25 Mhz) 
 
 
2.3.2 - Diferenças no Conjunto de Instruções 
 
O conjunto de instruções do 80386 é dividido em nove categorias: transferência de dados, 
aritméticas, deslocamento/lógicas, manipulação de strings, controle de transferência, suporte de 
linguagem de alto nível, suporte de sistema operacional e de controle de processador. As diferenças 
no conjunto de instruções estão intimamente ligadas às instruções de suporte de linguagem de alto 
nível e de sistema operacional. 
 
Uma das fraquezas do projeto 286 foi a sua incapacidade de emular o 8086, mantendo a proteção e 
a memória virtual. Com o 286, só se poderia emular o 8086 se este estivesse no modo real, quando a 
proteção está completamente desabilitada. O projeto do 386 corrigiu este problema e permitiu então 
que várias tarefas 8086 sejam emuladas ao mesmo tempo no seu modo VIRTUAL. 
 
A fim de fornecer compatibilidade em software com os 80286, o 80386 podia executar instruções de 
16 bits no modo real e no modo protegido. Prevendo a expansão para o 386, a INTEL, especificou 
para o 286 que os bits não usados por um descritor de segmento deveriam ser posicionados em "0". 
O 386 interpreta isso como um identificador de segmento 286. Assim, o processador examina o 
conteúdo de um bit D do descritor de segmento. Se é "0", então todos os comprimentos de operando 
e endereços efetivos são assumidos como de 16 bits (código 286). Se é 1, então o comprimento 
default é de 32 bits (código 386). Independentemente da precisão default, o 80386 pode executar 
instruções de 16 ou 32 bits, através de um prefixo automaticamente adicionado pelos montadores 
Assembly da INTEL. 
 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 32 
 
Fonte: "80386 High Performance Microprocessor with Integrated Memory Management", INTEL 
Corporation - Advance Information, october 1985; 
 
 
Além das diferenças anteriormente mencionadas, pode-se ainda citar algumas outras: 
 
1. O tempo de execução das instruções é diferente em vários casos. Na maior parte, o 386 é mais 
rápido que o 286; 
 
2. Existem vários códigos indefinidos no 286 que, se executados, provocariam uma falha de código 
(INT 6). No 386 a instrução será executada; 
 
3. O prefixo LOCK (impede que outros dispositivos acessem a memória do processador) para o 
8086 é irrestrito, mas para o 386 é proibido em várias instruções. O problema era que o uso 
indiscriminado do LOCK resultava em que dispositivos eram inibidos por períodos 
inaceitavelmente longos. No ambiente não protegido do 8086, cabia às aplicações não deixar que 
isto ocorresse. No ambiente protegido do 386, apenas algumas instruções podem ser precedidas 
deste prefixo, àquelas que não interferem com a velocidade de execução de tarefas. 
 
 
2.3.3 – Versões 80386, 80386SX e 80386SL 
 
 
O 80386SX podia ser interfaceado a circuitos periféricos de 16 bits, mas roda os softwares de 32 bits 
escritos para o 386, pois sua arquitetura interna é de 32 bits. O seu barramento de dados é de 16 
bits (a metade dos 32 bits do 80386). Endereça até 16 MBytes de memória real (bem menos que os 
4 Gigabytes do 80386). Era comercializado pela INTEL com relógio máximo de 20 Mhz (o 80386 era 
encontrado com relógio de 33 Mhz). Sua capacidade de execução de instruções varia entre 3 e 4 
MIPS (menos da metade dos 11,4 MIPS do 80386 a 33 Mhz). O coprocessador utilizado com o 
386SX era o 80387SX. 
 
O 80386SL era um microprocessador também derivado do 80386 e foi projetado especialmente para 
uso em computadores portáteis ("Lap Tops"). Esta pastilha foi o resultado da integração de três 
circuitos: a CPU 386SL, um controlador de barramento e um controlador de vídeo gráfico, diminuindo 
assim, o tamanho e o peso do equipamento, além de proporcionar uma característica particular de 
economia de energia. A memória real endereçável do 386SL era de 32 MBytes (16 MBytes a mais 
que o 386SX), sua freqüência de operação era de 20 Mhz e o barramento de dados de 16 bits (como 
no 386SX). A unidade gerenciadora de energia era capaz de baixar a zero a atividade na CPU, 
enquanto se lê a tela do micro ou no intervalo da digitação. A aplicabilidade do 386SL em "lap Tops" 
foi indiscutível. 
 
 
2.3.4 - Implicações no Desempenho de um Microcomputador 
 
 
Com base nas explicações fornecidas nos itens anteriores pode-se dizer o seguinte: 
 
A exemplo do que ocorreu com o 80286 em relação ao 8086, sistemas de microcomputador 
baseados no 80386, paulatinamente, passaram de servidores a desktops. Uma versão do Netware da 
Novell, a versão 3.12, até os dias atuais muito utilizada, usa toda a capacidade deste 
microprocessador, uma vez que foi escrita em C e assembly 386. 
 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 33 
O 80386 dispunha de um modo de execução muito melhor adaptado ao funcionamento multitarefa do 
que o 80286. Na época, sistemas baseados neste microprocessador eram os únicos capazes de 
suportar de uma só vez os sistemas operacionais DOS, OS/2 e UNIX. 
 
 
2.4 - OS I486 
 
 
A INTEL, segundo decisão da justiça dos EUA, não poderegistrar números, 386 e 486 p.e., como 
suas marcas. Optou então, por acrescentar um "i" (i minúsculo) na frente dos números. Assim, 486, 
80486 ou i486 eram nomes encontrados na literatura para designar o mesmo processador. 
Inicialmente será abordado o i486 e em seguida o i486SX. 
 
 
2.4.1 - Diferenças de Arquitetura e Características 
 
 
A arquitetura interna do i486 foi otimizada em relação ao 80386 ou i386. Isto possibilitou a introdução 
na pastilha de algo acima de um milhão de transistores (quatro vezes mais que o i386 possui). Os 
fabricantes de computadores foram diretamente beneficiados por esta densidade de integração, uma 
vez que a placa mãe sofreu uma redução significativa de tamanho e o processo de projeto e 
montagem foi simplificado. Também o microcódigo de instruções foi otimizado, de forma a manter o 
máximo possível as operações no interior da pastilha e, consequentemente, eram necessários 
menos ciclos de relógio para executar as mesmas instruções que o i386 já executava. O 486 usa 
ambas as bordas do sinal de Relógio para a CPU, enquanto os 286 e 386 usavam apenas uma 
borda. 
 
Pode-se dizer que, a grosso modo, o ganho de desempenho veio, essencialmente, da memória 
cache e do coprocessador (essencial em ambientes de CAD/CAM). Entretanto, em ambientes de 
microinformática, considerados mais simples, que usam planilhas e bancos de dados, o ganho de 
desempenho com o uso do coprocessador foi praticamente nulo. 
 
O i486 incorpora o i386 com as suas instruções, memória cache de 8 Kbytes de RAM estática (mais 
rápida que a dinâmica) e gerenciador próprio (80385) e coprocessador aritmético (80387). Foram 
adicionadas ao conjunto de instruções do i386 cinco instruções: três para gerenciamento da 
memória cache e duas, incluídas a pedido da Microsoft, para tratamento de tarefas concorrentes 
pelo OS/2. Como no i386, a pastilha endereça diretamente até 4.0 Gigabytes e indiretamente até 64 
Terabytes. 
 
 
2.4.2 - Diferenças na Capacidade de Processamento 
 
 
O i486 a 25 Mhz possui uma capacidade de processamento de instruções de aproximadamente 20.0 
MIPs (duas vezes mais rápido que um i386 nos mesmos 25 Mhz) e é totalmente compatível com 
este último. 
 
Como mencionado, a capacidade de processamento do 486 foi amplamente influenciada pela 
memória cache. Isto é detalhado a seguir. 
 
Há muitas discussões sobre o melhor tamanho da memória cache, mesmo entre os fabricantes de 
microcomputadores, por isso mesmo são oferecidas ao usuário as mais diferentes opções. Uma vez 
que esta é a responsável direta pelo aumento de desempenho da máquina, uma escolha acertada 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 34 
poderia beneficiar grandemente o usuário. O que se constata na literatura especializada é que o 
melhor tamanho para a memória cache é o tamanho do maior programa que vai ser executado 
naquela máquina. Entretanto pode-se tornar excessivamente caro colocar o máximo possível de 
memória cache, não compensando os benefícios correspondentes. 
 
O i486 permitiu memória cache externa, além dos 8 Kbytes internos. Assim, algumas máquinas 
eram oferecidas com 256 Kbytes externos. Considerando-se o desempenho relativo a um XT 4.77 
Mhz, pode-se fornecer alguns dados de desempenho, como discriminados abaixo: 
 
 
 
 
i486, 33 Mhz, cache externo de 64 Kbytes 
 
Cache interno e externo desabilitado è 6,5 vezes mais rápido; 
 
Somente cache externo habilitado è 26 vezes mais rápido; 
 
Somente cache interno habilitado è 38 vezes mais rápido; 
 
Caches interno e externo habilitados è 72 vezes mais rápido; 
 
Conclui-se destes dados que o cache interno é extremamente importante, mesmo sendo muito 
menor que o externo. Isto se deve a sua lógica de construção e, obviamente, ao fato de estar dentro 
da própria pastilha de CPU. 
 
Quando se carrega um programa na memória cache e este é executado, considera-se que isto é um 
"acerto" e cada vez que se deve movimentar um bloco da memória principal para a RAM de cache, 
considera-se que isto é um "erro". Existe, portanto, uma taxa de acertos ("Hit Rate") relacionada 
com o tamanho da memória cache. Um cache externo maior, evidentemente, possibilitará uma 
melhor taxa de acertos, uma vez que poderá conter mais programas. Assim, a velocidade do cache 
interno aliada a uma melhor taxa de acertos provida pelo cache externo, possibilitará um melhor 
desempenho da máquina como um todo. 
 
 
Sobre o i486SX 
 
 
O i486Sx foi lançado pela INTEL para fazer frente a concorrência acirrada do microprocessador 
Am386-40 de 40 Mhz da Advanced Micro Devices (AMD), mais veloz que o seu microprocessador 
mais rápido, o i386 33 Mhz. Deve-se entender o "SX" com uma versão desprovida de algo que sua 
versão completa, ou "full", ou ainda "DX", continha. 
 
O i486SX possui um barramento de dados de 32 bits, exatamente como o i486. Isto não aconteceu 
com o i386SX, o qual possui 16 bits para dados, 16 a menos que i386. Basicamente, o i486SX opera 
a uma taxa de relógio de 20 Mhz e possui uma unidade de ponto flutuante interna (como o i486), 
mas esta encontra-se desativada. Estes dois fatores levaram a uma diminuição no custo da pastilha 
de 60% em relação ao i486. O i486SX, mesmo a 20 Mhz segundo a INTEL, era 45% mais rápido que 
o i386 (33 Mhz), com um custo apenas 17 % superior. Já o i486 25 Mhz era 20% mais rápido que o 
i486SX (20 Mhz) e custava 270% mais caro (custo em março de 1992). Um quadro exibido pela 
revista Micro Sistemas em março de 1992 mostrava o seguinte: 
 
 
 
CPU (clock) Custo (US$) MIPs Custo do MIP (US$) 
i386 (33) 214 11,4 18,77 
i486SX(20) 250 16,5 15,15 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 35 
i486 (25) 671 20,0 33,55 
 
 
 
Sobre o i486 50 Mhz (i486/50 e i486DX2/50) 
 
 
Em junho de 1991 a INTEL lançou o i486 50 Mhz e somente em junho de 1992 a revista PC 
Magazine americana publicou testes de desempenho sobre as primeiras máquinas fabricadas com 
esta CPU. Antes desta CPU, a líder em desempenho da INTEL era o i486 33 Mhz. Segundo a citada 
revista, o i486/50 é 30% mais rápido que i486/33 a um custo (naquele ano) 10 a 20% maior. Uma 
observação importante é que máquinas equipadas com esta CPU definitivamente não eram baratas, 
mas a relação custo beneficio em relação ao i486/33 era atraente. Isto significou, em outras palavras, 
que se alguém estivesse disposto a pagar o preço de uma máquina 486/33, era melhor que o fizesse 
por uma i486/50, em função da melhor relação custo/benefício. 
 
Em março de 1992 a INTEL anunciou as chamadas pastilhas "Speed-Doubler". Tais pastilhas 
introduziram opções de preço e desempenho nos i486. Uma dessas opções, é o i486DX2/50 que 
opera internamente a 50 Mhz, mas comunica-se com os barramentos a 25 Mhz. Isto permite o 
projeto de sistemas baseados, externamente, no i486 25 Mhz, facilitando mais uma vez o dia-a-dia 
dos fabricantes de micro e minicomputadores. A segunda opção é a pastilha "full" i486DX/50. Esta 
pastilha é 30% mais rápida que a anterior. 
 
Em linhas gerais, pode-se dizer que para máquinas necessitando de uma atividade de Entrada/Saída 
intensa, como servidores de arquivos p.e., o i486DX2/50 não seria a primeira escolha. Já para 
máquinas "stand-alone" em ambientes de CAD/CAM esta seria uma boa escolha. 
 
O i486DX/50 contém basicamente a mesma lógica de processador que o i486DX/33, com 
coprocessador, 8 Kbytes de cache e 1,2 milhão de transistores, mas houve alguns refinamentos 
técnicos na parte de 50 Mhz, a qual usa um projeto de pastilha de três camadas e não de duas 
camadas como o i486DX/33. 
 
 
 
Sobre os i486DX2/66 e i486DX4/100 
 
 
Em novembro de 1992, foram disponibilizadas comercialmente máquinassob controle da pastilha 
i486DX2/66, ou seja, operando internamente a 66 Mhz e externamente a 33 Mhz. Testes preliminares 
revelaram que esta pastilha é 30% mais rápida que o i486DX/50. 
 
O i486DX4/100, possui um clock interno de 99 MHz, operando externamente a 33 MHz. Esta 
pastilha entrou e saiu rapidamente do mercado, dando lugar aos microprocessadores da classe 
Pentium. 
 
 
Algumas Observações: 
 
Os problemas relacionados a estes microprocessadores são a quantidade de calor desprendida, que 
precisa ser dissipada, e a emissão de sinais de alta frequência, podendo também sofrer 
interferências do meio ambiente, como é o caso das televisões que emitem sinais na faixa de 54 a 
890 Mhz. A partir dos i486, os fabricantes iniciaram a utilização de ventiladores acoplados aos 
dissipadores, para reduzir os efeitos da alta temperatura. Também alguns gabinetes são 
comercializados com algum tipo de blindagem interna de modo a minimizar a influência das 
frequências externas. 
 
Com a crescente demanda do mercado por redes de computadores e, consequentemente, por 
equipamentos de gerenciamento e interconexão de tais redes, observou-se que as CPUs de pontes 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 36 
(“Bridges”), roteadores (Routers”), ponte-roteadores (“Brouters”) e passarelas (“Gateways”) 
frequentemente, são CPUs INTEL do tipo 286 e 386. Neste mercado, modelos mais sofisticados 
desses equipamentos frequentemente fazem uso de CPUs MOTOROLA e alguns até mesmo de 
processadores RISC. 
 
 
2.5 - OS PENTIUM, PENTIUM MMX E PRO 
 
 
2.5.1 - Diferenças de Arquitetura e Características 
 
Antes de iniciar as explicações sobre os Pentium MMX e PRO, é necessário mencionar os primeiros 
microprocessadores da classe Pentium, os simplesmente Pentium (núcleo P54C). 
 
 
Os Pentium 
 
 
Essencialmente, o Pentium consiste de dois processadores i486 em paralelo. Logo, mais instruções 
são processadas ao mesmo tempo, tipicamente, o dobro. Pode-se destacar algumas características 
importantes. 
 
 
Pipelines 
 
O microprocessador Pentium é construído em torno de 2 pipelines (ou Pipes) inteiros (U e V), 
paralelos, de propósito geral e 1 unidade com pipeline, de ponto flutuante. O pipe U é chamado 
de Principal e o pipe V é chamado de Secundário. O Pipe U possue algumas limitações sobre 
instruções que executa. Os dois Pipes tem cinco estágios cada um, como mostrado na figura 12. 
 
O Pentium pode buscar até 2 instruções por ciclo. Durante a execução de uma instrução, as 
próximas duas instruções são testadas. Se possível, a primeira é executada no Pipe U e a Segunda 
no Pipe V. Se não é possível, uma instrução é passada ao Pipe U e nenhuma instrução é passada 
ao Pipe V. O comportamento funcional das instruções nos dois Pipes é exatamente o mesmo de 
instruções executadas sequencialmente. 
 
Caches 
 
O Pentium possui um subsistema de cache interno com 2 conjuntos (um para instrução e outro para 
dados) de caches associativos de 8 Kbytes. Como o cache de dados é disposto em 8 bancos, este 
pode ser acessado simultaneamente por ambos os Pipes, desde que as referências sejam para 
bancos diferentes. 
 
 
Prebuscador de Instruções (“Instruction Prefetcher”) 
 
O, aqui chamado, Prebuscador de Instruções possui 4 buffers de 32 Bytes. No estágio PF, dois 
buffers de prebusca operam em conjunto com o buffer chamado BTB (“Branch Target Buffer “). 
Somente 1 dos buffers de prebusca requisita prebuscas em um dado tempo. Se uma instrução de 
salto é buscada, o BTB prevê se o salto ocorrerá ou não. Se o salto não vai ser executado tudo 
continua linearmente. Se é para ser executado, o outro buffer de prebusca é habilitado e inicia a 
prebusca como se o salto fosse executado. Se finalmente o salto não for realizado, os pipelines de 
instrução são limpos e a atividade de prebusca recomeça. Como o cache de instruções e dados são 
separados, prebuscas de instruções não conflitam com referências a dados para acesso ao cache. 
 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 37 
O Pentium emprega um esquema de previsão dinâmica de saltos (“Dynamic Branch Prediction”). 
Se a previsão é correta, não há penalidade na execução de uma instrução de salto. Se não é correta, 
as penalidades são as seguintes: 
 
1. 3 ciclos, se o JUMP condicional foi no Pipe U; 
2. 4 ciclos, se o JUMP condicional foi no Pipe V e 
3. 3 ciclos em qualquer dos Pipes para CALLs e instruções de JUMP incondicional. 
 
 
 
 
 
 
 
Figura 12 – Pipelines de Inteiros do Pentium 
 
 
Write Buffers 
 
O Pentium possui 2 buffers de escrita, um para cada Pipe (U ou V). A finalidade desses buffers é 
aumentar o desempenho de escritas consecutivas na memória. Esses buffers de 64 bits são 
carregados simultaneamente em um período de relógio. Escritas nesses buffers são enviadas para o 
barramento externo do processador. Tais operações de escrita acontecem sempre na ordem em que 
ocorrem. Não são possíveis leituras intermediárias. 
 
Pipe U Pipe V
Prefetch
(PF)
Estágio de
Decodifi-
cação 1
(DS1)
Estágio de
Decodifi-
cação 2
(DS2)
Estágio de
Decodifi-
cação 2
(DS2)
Execução Execução
Writeback Writeback
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 38 
Unidade de Ponto Flutuante 
 
A Unidade de Ponto Flutuante do Pentium acrescenta um Pipeline de 3 estágios aos Pipes já 
mencionados (U e V). As instruções de ponto flutuante seguem normalmente pelo pipeline até o 
estágio E (Execução). Após este estágio, as instruções dispendem pelo menos um clock para cada 
um dos 3 estágios: X1, X2 e WF. A maioria das instruções de ponto flutuante tem um período de 
latência superior a um período de relógio. Entretanto, tal latência é escondida pela existência dos 3 
estágios. Além disso, instruções com inteiros (e não de ponto flutuante) são tratadas durante este 
período de latência. A figura 13 exibe a integração dos Pipelines de Inteiros e Ponto Flutuante. Os 3 
primeiros estágios do Pipe de Inteiros são desacoplados do Pipe de Ponto Flutuante. Os dois 
últimos são integrados. 
 
 
 
 
Figura 13 – Integração dos Pipelines de Inteiros e de Ponto Flutuante do Pentium 
 
 
Os Pentium MMX 
 
 
Os microprocessadores Pentium com tecnologia chamada pela INTEL de MMX (algo como 
“Multimedia Extensions”) trouxeram quatro enriquecimentos básicos de projeto arquitetônico: 
 
1. Arquitetura SIMD; 
2. 4 novos tipos de dados. 
3. 8 registradores MMX de 64 bits e 
4. 57 novas instruções; 
 
Como a própria INTEL propagandeia, esta mudança na arquitetura do processador foi a mais 
importante desde o 80386, o qual extendeu a arquitetura de 16 para 32 bits e introduziu três modos 
de funcionamento (real, protegido e virtual). Como de fato se verificou, tais mudanças foram 
incorporadas a todas as gerações de processadores subsequentes da empresa. 
 
Segundo a INTEL, a definição desta tecnologia foi resultado de trabalho conjunto entre arquitetos de 
microprocessadores e desenvolvedores de software. Dentre os softwares analisados, incluiram-se 
Gráficos, Vídeo MPEG, Síntese de música, compressão de voz, reconhecimento de voz, 
Prefetch
(PF)
Estágio de
Decodifi-
cação 1
(DS1)
Estágio de
Decodifi-
cação 2
(DS2)
Execução Writeback
X1 X2 WF
Estágios do Pipe de Ponto Flutuante desacoplados
Estágios Integrados dos Pipes
Pipeline de Inteiros somente
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 39 
processamento de imagens, jogos e vídeo-conferência. O núcleo deste processador foichamado de 
P55C. 
 
Esta análise mostrou muitas características comuns entre as diversas categorias de software. Os 
atributos chave para estas aplicações foram: 
 
· Tipos de dados pequenos e inteiros (por exemplo: pixel gráfico de 8 bits, amostras de 
áudio de 16 bits); 
· Loops pequenos altamente repetitivos; 
· Multiplicações e acumulações frequentes; 
· Algoritmos de computação intensiva; 
· Operações altamente paralelas. 
 
Assim, foi projetado um grupo de instruções novo, com instruções inteiras de propósito geral, visando 
a otimização do processamento de tais aplicações. 
 
Arquitetura SIMD (“Single Instruction Multiple Data”) 
 
Técnicas SIMD foram utilizadas de forma a permitir que múltiplas peças de informação pudessem ser 
processadas com uma única instrução, provendo um certo paralelismo, reduzindo loops de 
computação intensiva e, consequentemente, aumentando o desempenho de aplicações multimídia e 
de comunicações. 
 
Novos Tipos de Dados 
 
O tipo de dado principal da arquitetura MMX é um pacote inteiro de ponto fixo, onde múltiplas 
palavras inteiras são agrupadas em uma única quantidade de 64 bits. Estes pacotes são 
manipulados por registradores MMX de 64 bits. 
 
Como exemplo de benefício pode-se citar o pixel, geralmente representado em inteiros de 8 bits, ou 
bytes. 8 desses pixels podem ser “empacotados” em uma única quantidade de 64 bits e movidos 
para um registrador MMX. Uma instrução MMX ao ser executada, busca 8 pixels de uma só vez, faz 
as operações lógicas e aritméticas sobre os oito elementos e escreve o resultado em um outro 
registrador MMX. 
 
A figura 14 exibe os novos tipos de dados do Pentium MMX. 
 
 
 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 40 
Packet Byte (8 elementos de 8 bits)
Packet Word (4 elementos de 16 bits)
Packet Doubleword (2 elementos de 32 bits)
Quadword (1 elemento de 64 bits)
063
63 0
31 7
31
63 031
63 0
 
 
 
Figura 14 – Novos Tipos de Dados do Pentium MMX 
 
 
 
 
 
 
 
 
Registradores MMX 
 
A figura 15 exibe o layout dos oito novos registradores MMX 
 
063
MM0
MM7
Campo
TAG
 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 41 
 
 
Figura 15 – Registradores MMX 
 
 
 
Novas Instruções 
 
As instruções MMX cobrem vários grupos funcionais, incluindo: 
 
1. Operações aritméticas básicas; 
2. Operações de comparação; 
3. Instruções de conversão entre novos tipos de dados (“packets”) e de pequenos para 
grandes tipos de dados; 
4. Operações lógicas tais como: AND, OR, NOT e XOR; 
5. Operações de Shift; 
6. Instruções MOV para dados de 32 ou 64 bits; 
 
 
As instruções lógicas e aritméticas são projetadas para suportar diferentes tipos de dados. Tais 
instruções possuem um código de operação para cada tipo de dado suportado. Como resultado, as 
novas instruções são implementadas com 57 códigos de operação. Um aspecto importante é que 
instruções MMX não são privilegiadas, podendo ser usadas em aplicações, 
codificadores/decodificadores, algoritmos e drivers. 
 
 
Categoria Mnemônico Nr. De Códigos de 
Operação Diferentes 
Descrição 
PADD [B,W,D] 3 Add with wrap-around on [byte, word, 
doubleword] 
PADDS [B,W] 2 Add signed with saturation on [byte, 
word] 
PADDUS [B,W] 2 Add unsigned with saturation on [byte, 
word] 
PSUB [B,W,D] 3 Subtract with wrap-around on [byte, 
word, doubleword] 
PSUBS [B,W] 2 Subtract signed with saturation on [byte, 
word] 
PSUBUS [B,W] 2 Subtract unsigned with saturation on 
[byte, word] 
PMULHW 1 Packed multiply high on words 
PMULLW 1 Packed multiply low on words 
Aritmética 
PMADDWD 1 Packed multiply on words and add 
resulting pairs 
PCMPEQ 
[B,W,D] 
3 Packed compare for equality [byte, 
word, doubleword] 
Comparação 
PCMPGT 
 [B,W,D] 
3 Packed compare greater than [byte, 
word, doubleword] 
PACKUSWB 1 Pack words into bytes (unsigned with 
saturation) 
PACKSS 
[WB,DW] 
2 Pack [words into bytes, doublewords 
into words] (signed with saturation) 
Conversão 
PUNPCKH 
[BW,WD,DQ] 
3 Unpack (interleave) high-order [bytes, 
words, doublewords] from MMXTM 
register 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 42 
 PUNPCKL 
[BW,WD,DQ] 
3 Unpack (interleave) low-order [bytes, 
words, doublewords] from MMX register 
PAND 1 Bitwise AND 
PANDN 1 Bitwise AND NOT 
POR 1 Bitwise OR 
Lógicas 
PXOR 1 Bitwise XOR 
PSLL [W,D,Q] 6 Packed shift left logical [word, 
doubleword, quadword] by amount 
specified in MMX register or by 
immediate value 
PSRL [W,D,Q] 6 Packed shift right logical [word, 
doubleword, quadword] by amount 
specified in MMX register or by 
immediate value 
Shift 
PSRA [W,D] 6 Packed shift right arithmetic [word, 
doubleword] by amount specified in MMX 
register or by immediate value 
Transferência 
de Dados 
MOV [D,Q] 4 Move [doubleword, quadword] to MMX 
register or from MMX register 
Gerenciamen-
to de Estado 
MMX e Ponto 
Flutuante 
EMMS 1 Empty MMX state 
 
 
 
Pipeline Superescalar 
 
Os Pentium MMX adicionam mais estágios ao pipeline. A integração do Pipe MMX com o Pipe de 
inteiros é muito similar a do Pipe de Ponto Flutuante. A Figura 16 mostra esta estrutura de pipeline. 
 
Os Pentium MMX adicionam um estágio de pipeline inteiro. Os bytes de instrução são prebuscados 
do cache de código no estágio de prebusca PF e passados ao estágio de busca F. Quaisquer 
prefixos são decodificados no estágio F. 
 
 
 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 43 
MR/W Mex WM/M2 M3 WMul
PF F DS1 DS2 E WB
E1 E2
E1 E2 E3
Estágios do Pipe de MMX desacoplados
Estágios Integrados dos Pipes
Pipeline de Inteiros somente
 
 
Figura 16 – Estrutura Pipeline MMX 
 
 
 
O estágio F é desacoplado da decodificação de instruções por meio de um buffer FIFO (“First In, 
First Out”), o qual está situado entre os estágios F e D1 (“Decode 1”). Esta FIFO mantém até 4 
instruções. 
 
A cada período de relógio, 2 instruções são colocadas nesta FIFO. Pares de instrução são 
colocados para fora de F e dentro de D1. Uma vez que a taxa média de execução de instruções é 
menos que duas por clock, a FIFO está normalmente cheia. Quando a FIFO está cheia, esta deve 
“bufferizar” qualquer “freio” que pode ocorrer durante a busca de instrução. Esta FIFO previne, o 
estágio de Execução do pipe, de um “freio” na execução de instruções. 
 
 
Exemplos de Instruções MMX 
 
 
Para ilustração, o tipo de dado será uma palavra de 16 bits (word), contudo a maioria das operações 
pode ser realizada para 8 e 32 bits. 
 
A figura 17 mostra uma operação de adição (PADD[W] - “Add with wrap-around on [word]”). São 
realizadas 4 adições de 8 elementos de 16 bits. Cada uma independente da outra e em paralelo. 
Neste caso, o resultado mais à direta excede o valor máximo representável em 16 bits e o 17º bit é 
perdido. 
 
 
 
Microprocessadores 
_________________________________________________________________________________________________
____ 
 
Página 44 
 
 
 
 
 
Figura 17 – Instrução PADD[W] 
 
 
 
A figura 18 mostra uma outra operação de adição (PADDUS[W] - “Add unsigned with saturation on 
[word]”). Neste caso, uma saturação ocorre. Saturação significa que se a adição resulta em 
“overflow” ou a subtração em “underflow”, o resultado é alterado para o maior ou para o menor valor 
representável, respectivamente.

Continue navegando