microprocessadores microprocessadores

Сomentários

Transcrição

microprocessadores microprocessadores
UNIVERSIDADE FEDERAL DO PARÁ
CENTRO TECNOLÓGICO
DEPARTAMENTO DE ENGENHARIA ELÉTRICA
CURSO:
MICROPROCESSADORES
Prof.: Marcelo Barretto
Mestre em Engenharia Elétrica - PUC/RJ
Professor Adjunto IV
Especialista em Redes Locais de Computadores
Ano: 2000
Microprocessadores
_________________________________________________________________________________________________
____
Sumário
Capítulo 1: Conceitos Básicos
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
- Histórico
- CPU, Memórias e Dispositivos de Entrada/Saída
- Sistema de Barramentos
- Arquitetura Padrão de um Microprocessador
- Execução de Instruções em Microprocessadores
- Algumas Instruções Importantes
- Capacidade de Interrupção
- 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
3.2
3.3
3.4
- Os Barramentos Principais ISA, EISA e MCA
- Os Barramentos Locais Secundários VESA e PCI
- Os Barramentos Secundários IDE e Enhanced IDE
- 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
Página 2
Microprocessadores
_________________________________________________________________________________________________
____
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
Página 3
Microprocessadores
_________________________________________________________________________________________________
____
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:
1981:
1982:
1984:
1985:
1986:
1988:
1989:
=> MOTOROLA 68.000 (68.000 transistores integrados)
=> MOTOROLA 68.010
=> INTEL 80186/80188
=> INTEL 80286 (130.000 transistores integrados)
=> MOTOROLA 68.020
=> INTEL 80386 (ou 80386DX, ou i386)
=> MOTOROLA 68.030
=> INTEL 80386SX
=> INTEL i486 (1.200.000 transistores)
Década de 90:
1991:
1992:
1993:
1995:
=> INTEL i386SL, i486SX
ð Microprocessadores com tecnologia RISC
=> INTEL i486DX2/50 e i486DX2/66
=> INTEL Pentium
=> INTEL Pentium Pro
Página 4
Microprocessadores
_________________________________________________________________________________________________
____
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;
Página 5
Microprocessadores
_________________________________________________________________________________________________
____
EPROM - "Erasable PROM": 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.
Microprocessador
(CPU)
Memória
RAM
Memória
EPROM
Barramento de Endereços
Barramento de Dados
Barramento de Controle
Interfaces
para
Memória
Secundária
Interfaces de
Interação c/
o Usuário
HD
Imp. Matricial
Monitor
Interfaces de
Controle e
Sensoreamento
CD-ROM R/W
Sensor
Válvula
Modem
Scanner
Figura 1 – Sistema de Microcomputador Típico e suas Interfaces
Página 6
Microprocessadores
_________________________________________________________________________________________________
____
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;
Página 7
Microprocessadores
_________________________________________________________________________________________________
____
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.
Barramento de
Dados
Buffer de
Dados
Acumulador
RI
Código de
Instrução
Informação
Complementar
Decodificador
X
R1
SP
Apontador
de Pilha
..
.
PC
Contador de
Programa
Rn
Unidade Lógica e
Aritmética (ALU)
Registradores de
Rascunho
Unidade de
Controle
S
Z
CY
AC
Buffer de Endereço
Sinais de
Controle
P
Flags
Barramento de
Endereços
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,
Página 8
Microprocessadores
_________________________________________________________________________________________________
____
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
Código de Operação
Ex.:
MOV R1,R2 ; R1 <- R2
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
Código de Operação
D7 D6 D5 D4 D3 D2 D1 D0
Info. Complementar
Ex.:
MVI R,dado ; R <- dado
3. Instruções de três bytes
Página 9
Microprocessadores
_________________________________________________________________________________________________
____
D7 D6 D5 D4 D3 D2 D1 D0
Código de Operação
D7 D6 D5 D4 D3 D2 D1 D0
Info. Complementar
D7 D6 D5 D4 D3 D2 D1 D0
Info. Complementar
Ex.: LXI Rp, dado 16 ; Rh <- (byte3)
; Rl <- (byte 2)
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;
Página 10
Microprocessadores
_________________________________________________________________________________________________
____
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 ==>
Código de Operação
Informação Complementar
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.
Página 11
Microprocessadores
_________________________________________________________________________________________________
____
5
Caracter "A" do teclado
Porta de
Entrada 01
5
5
Acumulador
16
Registrador de
Instrução
Microprocessador
1
3
6
8
12
14
Endereço
0100
0101
0102
0103
0104
0105
0106
0107
Conteúdo
IN
01
STA
00
20
OUT
10
...
2
4
7
9
13
15
Memória de Programa
10
Endereço
2000
2001
2002
2003
Conteúdo
A
11
Memória de Dados
16
Porta de
Saída 10
16
Caracter "A" para o
monitor de Vídeo
Figura 3 – Execução de Instruções por um Microprocessador Passo-a-Passo
Página 12
Microprocessadores
_________________________________________________________________________________________________
____
T1 T2 T3 T4 T5
T1 T2 T3 T4 T5 T 1 T2 T3 T4
T5 T1 T2 T 3 T 4 T 5
Fase
Busca
Exec.
Busca
Exec.
Busca
Exec.
Busca
Exec.
Ciclo
Ciclo
M1
Ciclo
M2
Ciclo
M3
Ciclo
M4
Oper.
RI <- LDA
Não
Usado
Não
Usado
RI <- 20
Não
Usado
PC
1001
->1002
1003
1004
Busca do
Código de
Operação da
Instrução e
Transferência
deste código
para o
Registrador de
Instrução (RI)
RI <- 04
1002
->1003
Busca do
primeirobyte do
endereço e
transferência
para dentro da
parte de
endereço do RI,
byte demenor
ordem
Busca do
segundobyte
do endereço e
transferência
para dentro da
parte de
endereço do RI,
byte demaior
ordem
Bar.
A <Dados (0420)
<-(0420)
1004
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
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.
Página 13
Microprocessadores
_________________________________________________________________________________________________
____
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
registradores ou entre locações de memória e registradores;
"COMPLEMENTs"
dados
entre
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.
Página 14
Microprocessadores
_________________________________________________________________________________________________
____
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 Counter
Ex.: Endereços de salto possíveis no INTEL 8085:
HEXADECIMAL
0000
0008
0010
0018
0020
0024
0028
002C
0030
0034
0038
003C
DECIMAL
0
8
16
24
32
36
40
44
48
52
56
60
RST
0
1
2
3
4
TRAP
5
5.5
6
6.5
7
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
Página 15
Microprocessadores
_________________________________________________________________________________________________
____
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)
TRAP
1
0024H
RST 7.5
RST 6.5
RST 5.5
INTR
2
3
4
5
003CH
0034H
002CH
(2)
TIPO DE "TRIGGER"³
Pulso Positivo amostrado
até Alto Nível
Pulso Positivo "Latched"
Sensível a Nível (Alto)
Sensível a Nível (Alto)
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.
Página 16
Microprocessadores
_________________________________________________________________________________________________
____
INTEL
8085
1
INTR
2
INTA
3
RST nn
Dispositivo
Periférico
Ex.: RST 7
3
4
Endereço
0038
0039
003A
2
Dado
C3 (JMP)
00
80
Programa sendo executado
6001
6002
6003
1
INTR
6
Pilha
(SP)
02
60
Subrotina de Serviço de
Interrupção
8000
5
...
...
RET
Figura 5 – Mecanismo de Interrupção no INTEL 8085
Página 17
Microprocessadores
_________________________________________________________________________________________________
____
___
INT
____
INTA
1
ZILOG
Z80
2
Dispositivo
Periférico
I
Registrador da CPU
80
80
Programa sendo executado
4002
4003
4004
2
Pilha
(SP)
60XX
4
1 ___
INT
6
3
04
40
Subrotina de Serviço de
Interrupção
6050
04
5
...
...
RETI
Tabela de Endereços de
Interrupção
8003
8004
50
8005
60
8006
Figura 6 – Mecanismo de Interrupção (Modo 2) no ZILOG Z80
Página 18
Microprocessadores
_________________________________________________________________________________________________
____
PIO
DMA
Barramentos
Z80
CPU
Mecanismo
"Daisy Chain"
CTC
SIO
Prioridade Fixa
8274
8253
Barramentos
8085
CPU
8259
(PIC)
8257
8272
Prioridade
Controlada
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
Página 19
Microprocessadores
_________________________________________________________________________________________________
____
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 passoa-passo o procedimento de transferência de dados para a ou da memória, sem interferência da CPU.
Memória
Disp. 0
Disp. 1
Barramentos
s
do
Da
CPU
2
HOLD
CDMA
3 HOLDA
DRQ
1
Disp. 3
Disp. 2
DACK
4
Driver Óptico
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
Página 20
Microprocessadores
_________________________________________________________________________________________________
____
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.
Página 21
Microprocessadores
_________________________________________________________________________________________________
____
CAPÍTULO 2: OS MICROPROCESSADORES DA INT EL
2.1 – O 8086/8088
A figura 9 exibe o Diagrama em Blocos da Arquitetura do 8086.
2.1.1 – Arquitetura
Unidade de Execução
AH
BH
CH
DH
AL
BL
CL
DL
SP
BP
SI
DI
Unidade de Interface de
Barramento
0000
IP
CS
DS
SS
ES
0000
0000
0000
0000
Unidade de Controle de
Barramento
ALU (Unidade Lógica e
Aritmética)
Unidade de Controle
1
2
3
4
5
6
Status
Fila de Código Objeto
de Instrução
Registrador de Instrução
Figura 9 – Arquitetura do 8086
Fonte: "The 8086 Book", Rector R. e Alexy G. - OSBORNE/McGraw-Hill
Página 22
Microprocessadores
_________________________________________________________________________________________________
____
Registradores do 8086/8088
Registrador
AX = AH + AL
BX = BH + BL
CX = CH + CL
DX = DH + DL
SP
BP
SI
DI
IP
Flags H + Flags L
CS
DS
SS
ES
Finalidade
Acumulador
Base (2º acumulador)
Contador (usado em instruções de múltiplas interações)
Dado (algumas instruções movem dados de uma porta de E/S para a posição
de memória endereçada por DX)
Apontador de Pilha
Apontador de Base
Índice Fonte
Índice Destino
Apontador de Instrução
Flags
Segmento de Código
Segmento de Dados
Segmento de Pilha
Segmento Extra
Observações:
1.
2.
3.
4.
O registrador SP está estreitamente ligado ao ES, em função das operações relacionadas à
manutenção da pilha;
O registrador IP está estreitamente ligado ao CS, em função das operações relacionadas à
execução de instruções;
O endereço fonte de um String de dados é obtido à partir de SI + DS;
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
CS
(IP+CS) Endereço Final è
0MMMM
NNNN0
PPPPM
Página 23
Microprocessadores
_________________________________________________________________________________________________
____
End. da Memória de Dados
XX
DS
(XX+DS) Endereço Final è
0MMMM
NNNN0
DDDDM
End. da Memória de Pilha
XX
SS
(XX+SS) Endereço Final è
0MMMM
NNNN0
SSSSM
End. da Memória Extra
XX
ES
(XX+ES) Endereço Final è
0MMMM
NNNN0
DDDDM
Observações:
1.
2.
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);
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
IRQ 1
IRQ 2
...
è
è
è
Divisão por Zero
Passo-a-Passo
NMI (“Not Maskable Interrupt”)
2. Interrupções de Hardware (definidas pelo usuário)
De 32 a 255:
Solicitadas via pino INTR da CPU
Página 24
Microprocessadores
_________________________________________________________________________________________________
____
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.
1a. Instrução
Rotina de Serviço
de Interrupção
IRET
Número de
Interrupção
003FF
x 4
IP
CS
Tabela de
Vetores de
Interrupção
00000
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
Página 25
Microprocessadores
_________________________________________________________________________________________________
____
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 otimizado para suportar sistemas multitarefa e multiusuário.
Página 26
Microprocessadores
_________________________________________________________________________________________________
____
Registradores do 80286
Registrador
AX = AH + AL
BX = BH + BL
CX = CH + CL
DX = DH + DL
SP
BP
SI
DI
IP
Flags H + Flags L
CS
DS
SS
ES
Finalidade
Acumulador
Base (2º acumulador)
Contador (usado em instruções de múltiplas interações)
Dado (algumas instruções movem dados de uma porta de E/S e a posição de
memória endereçada por DX)
Apontador de Pilha
Apontador de Base
Índice Fonte
Índice Destino
Apontador de Instrução
Flags
Segmento de Código
Segmento de Dados
Segmento de Pilha
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
80286-6
80286
80286x
==> 4.0 Mhz
==> 6.0 Mhz
==> 8.0 Mhz
==> 12.0 Mhz e 16 Mhz
Organização de Memória:
è 2 x 8.0 MBytes;
a) física
b) Endereçamento:
31
16 15
Seletor de Segmento
0
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;
Página 27
Microprocessadores
_________________________________________________________________________________________________
____
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
Página 28
Microprocessadores
_________________________________________________________________________________________________
____
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.
Registradores Gerais de
Endereço e Dados
31
15
7 0
AH
AL
BH
BL
CH
CL
DH
DL
SI
DI
BP
SP
Registradores Seletores
de Segmento
15
EAX
EBX
ECX
EDX
ESI
EDI
EBP
ESP
0
CS
SS
DS
ES
FS
GS
Código
Pilha
Dados
Apontador de Instrução
e Registrador de Flags
IP
FLAGS
EIP
EFlags
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
Página 29
Microprocessadores
_________________________________________________________________________________________________
____
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, tendo tempo 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
80386-16
80386x
80386x
Am386-40
è
è
è
è
è
12.5 Mhz
16.0 Mhz
20.0 Mhz
33.0 Mhz
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:
Página 30
Microprocessadores
_________________________________________________________________________________________________
____
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.
Página 31
Microprocessadores
_________________________________________________________________________________________________
____
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.
Página 32
Microprocessadores
_________________________________________________________________________________________________
____
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 pode registrar 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
Página 33
Microprocessadores
_________________________________________________________________________________________________
____
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;
è 26 vezes mais rápido;
Somente cache externo habilitado
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)
i386 (33)
i486SX(20)
Custo (US$)
MIPs
Custo do MIP (US$)
214
250
11,4
16,5
18,77
15,15
Página 34
Microprocessadores
_________________________________________________________________________________________________
____
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áquinas sob 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
Página 35
Microprocessadores
_________________________________________________________________________________________________
____
(“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.
Página 36
Microprocessadores
_________________________________________________________________________________________________
____
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.
2.
3.
3 ciclos, se o JUMP condicional foi no Pipe U;
4 ciclos, se o JUMP condicional foi no Pipe V e
3 ciclos em qualquer dos Pipes para CALLs e instruções de JUMP incondicional.
Prefetch
(PF)
Estágio de
Decodificação 1
(DS1)
Pipe U
Pipe V
Estágio de
Decodificação 2
(DS2)
Estágio de
Decodificação 2
(DS2)
Execução
Execução
Writeback
Writeback
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.
Página 37
Microprocessadores
_________________________________________________________________________________________________
____
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.
X1
Prefetch
(PF)
Estágio de
Decodificação 1
(DS1)
Estágio de
Decodificação 2
(DS2)
X2
WF
Execução Writeback
Estágios do Pipe de Ponto Flutuante desacoplados
Estágios Integrados dos Pipes
Pipeline de Inteiros somente
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.
2.
3.
4.
Arquitetura SIMD;
4 novos tipos de dados.
8 registradores MMX de 64 bits e
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,
Página 38
Microprocessadores
_________________________________________________________________________________________________
____
processamento de imagens, jogos e vídeo-conferência. O núcleo deste processador foi chamado 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.
Página 39
Microprocessadores
_________________________________________________________________________________________________
____
Packet Byte (8 elementos de 8 bits)
63
31
7
0
Packet Word (4 elementos de 16 bits)
63
31
0
Packet Doubleword (2 elementos de 32 bits)
63
31
0
Quadword (1 elemento de 64 bits)
63
0
Figura 14 – Novos Tipos de Dados do Pentium MMX
Registradores MMX
A figura 15 exibe o layout dos oito novos registradores MMX
Campo
TAG
63
0
MM7
MM0
Página 40
Microprocessadores
_________________________________________________________________________________________________
____
Figura 15 – Registradores MMX
Novas Instruções
As instruções MMX cobrem vários grupos funcionais, incluindo:
1.
2.
3.
4.
5.
6.
Operações aritméticas básicas;
Operações de comparação;
Instruções de conversão entre novos tipos de dados (“packets”) e de pequenos para
grandes tipos de dados;
Operações lógicas tais como: AND, OR, NOT e XOR;
Operações de Shift;
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
Aritmética
Comparação
Conversão
Mnemônico
Nr. De Códigos de
Operação Diferentes
Descrição
PADD [B,W,D]
3
PADDS [B,W]
2
PADDUS [B,W]
2
PSUB [B,W,D]
3
PSUBS [B,W]
2
PSUBUS [B,W]
2
PMULHW
PMULLW
PMADDWD
1
1
1
PCMPEQ
[B,W,D]
PCMPGT
[B,W,D]
PACKUSWB
3
PACKSS
[WB,DW]
PUNPCKH
[BW,WD,DQ]
2
Add with wrap-around on [byte, word,
doubleword]
Add signed with saturation on [byte,
word]
Add unsigned with saturation on [byte,
word]
Subtract with wrap-around on [byte,
word, doubleword]
Subtract signed with saturation on [byte,
word]
Subtract unsigned with saturation on
[byte, word]
Packed multiply high on words
Packed multiply low on words
Packed multiply on words and add
resulting pairs
Packed compare for equality [byte,
word, doubleword]
Packed compare greater than [byte,
word, doubleword]
Pack words into bytes (unsigned with
saturation)
Pack [words into bytes, doublewords
into words] (signed with saturation)
Unpack (interleave) high-order [bytes,
words, doublewords] from MMXTM
register
3
1
3
Página 41
Microprocessadores
_________________________________________________________________________________________________
____
Lógicas
PUNPCKL
[BW,WD,DQ]
PAND
PANDN
POR
PXOR
PSLL [W,D,Q]
3
PSRL [W,D,Q]
6
PSRA [W,D]
6
1
1
1
1
6
Shift
Transferência MOV [D,Q]
de Dados
Gerenciamen- EMMS
to de Estado
MMX e Ponto
Flutuante
4
1
Unpack (interleave) low-order [bytes,
words, doublewords] from MMX register
Bitwise AND
Bitwise AND NOT
Bitwise OR
Bitwise XOR
Packed
shift
left
logical
[word,
doubleword, quadword] by amount
specified in MMX register or by
immediate value
Packed shift right logical [word,
doubleword, quadword] by amount
specified in MMX register or by
immediate value
Packed shift right arithmetic [word,
doubleword] by amount specified in MMX
register or by immediate value
Move [doubleword, quadword] to MMX
register or from MMX register
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.
Página 42
Microprocessadores
_________________________________________________________________________________________________
____
PF
F
DS1
DS2
MR/W
Mex
E
WB
E1
E2
E1
E2
WM/M2
M3
WMul
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.
Página 43
Microprocessadores
_________________________________________________________________________________________________
____
a3
a2
a1
FFFF
+
+
+
+
b3
b2
b1
8000
a3+b3 a2+b2 a1+b1 7FFF
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. Para uma operação sem sinal, com uma palavra de 16 bits, o maior
e o menor valor são: FFFFh e 0000h. Isto é importante para cálculos de pixels, onde a perda do 17º
bit poderia causar um pixel preto logo após um pixel branco em um gráfico 3D.
a3
a2
a1
FFFF
+
+
+
+
b3
b2
b1
8000
a3+b3 a2+b2 a1+b1 FFFF
Figura 18 – Instrução PADDUS[W]
Os novos games 3D manipulam objetos 3D. Estas computações, tipicamente, são baseadas em
matrizes 4 x 4, as quais são multiplicadas por 4 vetores várias vezes. O vetor possui a informação de
X, Y, Z e a correção de perspectiva para cada pixel. A matriz 4 x 4 é usada para girar, escalonar,
translacionar e atualizar a informação de correção das perspectiva para cada pixel. Esta matriz é
aplicada a muitos vetores. A figura 19 mostra esses cálculos e o que faz a instrução PMADD.
Página 44
Microprocessadores
_________________________________________________________________________________________________
____
Giro e Escala
Translação
x'
a0
a1
a2
a3
x
y'
b0
b1
b2
b3
y
c0
c1
c2
c3
z
d0
d1
d2
d3
1
z'
=
w'
Perspectiva
x = a0.x + a1.y + a2.z + a3
Figura 19 – Instrução PMADD
Os Pentium PRO
Diferentemente dos 5 estágios do Pentium. O Pentium PRO possui um pipeline de 12 estágios,
desacoplado. Isto lhe confere um desempenho 33% superior ao Pentium comum. Sua
microarquitetura superescalar torna possível a execução de 2 instruções por clock. A figura 20
detalha este pipeline.
O Pipeline do Processador Pentium PRO possui 3 unidades que se comunicam através de um Pool
de Instruções: A Unidade de Busca/Decodificação (ou “Front-End”), a Unidade de
Despacho/Execução (ou “Core”) e a Unidade de Retiro (ou “Retire”). A figura 21 exibe a ligação entre
estas unidades.
Port
2
BTB
0
BTB
1
IFU0
IFU1
IFU2
ID0
ID1
RAT
ROB
Rd
Port Port
4
3
ROB
Wb
RS
RRF
Port
0 Port
1
Figura 20 – Pipeline do Pentium PRO
Página 45
Microprocessadores
_________________________________________________________________________________________________
____
Unidade de
Busca/
Decodificação
Unidade de
Despacho/
Execução
Unidade de
Retiro
Pool de
Instruções
Figura 21 – As 3 unidades do Pentium PRO
A Unidade de Busca/Decodificação possue como entrada o conjunto de instruções de programa
de usuário armazenado no cache de instruções L1 (interno). Tal unidade decodifica este conjunto em
uma série de microperações que representam o fluxo de dados daquele conjunto.
A Unidade de Despacho/Execução aceita o fluxo de dados, esquematiza a execução das
microperações sujeitas a dependência de dados e disponibilidade de recursos. Em seguida,
armazena o resultado dessas execuções especulativas.
A Unidade de Retiro conhece como e quando confirmar do resultado especulativo temporário para
um estado arquitetural permanente.
A Unidade de Interface de Barramento responsável pela conexão das 3 unidades internas ao
mundo real. Esta unidade comunica-se diretamente com o cache L2 (externo), suportando até 4
acessos concorrentes ao cache.
A figura 22 ilustra mais detalhadamente estes aspectos.
Página 46
Microprocessadores
_________________________________________________________________________________________________
____
Barramento
de Sistema
Cache L2
Unidade de Interface de Barramento
Cache de
Instruções L1
Unidade de
Busca/
Decodificação
Cache de Dados L1
Unidade de
Despacho/
Execução
Unidade de
Retiro
Pool de
Instruções
Figura 22 – A Interface das 3 unidades com a memória usando Caches
Unificados de 8K/8K do Pentium PRO
Execução Dinâmica de Instruções
Execução Dinâmica, segundo a INTEL, é a combinação única de 3 técnicas de processamento:
•
Predição de Múltiplos Saltos. Inicialmente o processador “olha” múltiplos passos atrás no
software e prediz quais saltos ou grupos de instruções, provavelmente, serão processadas;
•
Análise do Fluxo de Dados. Em seguida, analisa quais instruções são dependentes do resultado
ou dados de outras instruções, para criar uma sequência otimizada de instruções;
Página 47
Microprocessadores
_________________________________________________________________________________________________
____
•
Execução Especulativa. As instruções são então “puxadas” especulativamente, com base no
esquema otimizado.
Arquitetura Superscalar
Arquitetura Superscalar é uma microarquitetura capaz de sinmultaneamente buscar, decodificar e
executar múltiplas operações inteiras por período de relógio. Tipicamente o Pentium PRO “percebe”
entre 20 e 30 instruções na frente do IP (“Instruction Pointer”).
Suporte a Múltiplos Processadores
O barramento externo do Pentium PRO foi otimizado para suportar de 1 a 4 CPUs. A figura 23 ilustra
este fato.
Figura 23 – Esquema de Multiprocessamento do Pentium PRO
Página 48
Microprocessadores
_________________________________________________________________________________________________
____
2.5.2 – Benchmarks
Página 49
Microprocessadores
_________________________________________________________________________________________________
____
Página 50
Microprocessadores
_________________________________________________________________________________________________
____
2.6 - OS PENTIUM II
2.6.1 - Arquitetura e Características
O Pentium II vem evoluindo continuamente, de acordo com os novos desenvolvimentos ou opções da
INTEL. Trataremos aqui da arquitetura inicial deste processador, cujo codinome ainda é “Klamath”.
A característica principal do Pentium II foi a incorporação da tecnologia MMX às Unidades de
Execução do processador Pentium PRO. Sendo assim, tornou-se recomendável tanto para
servidores, quanto para desktops. São discriminadas a seguir as principais características do
Pentium II.
•
•
•
•
•
•
•
•
•
•
•
•
•
Cache interno L1 32 Kbytes (16 K para instruções + 16 K para dados). Cache duas vezes maior
que o do Pentium PRO;
Cache externo L2 é de 512 Kbytes em ½ velocidade (“half speed”), fazendo parte do cartucho de
metal e plástico que inclui o núcleo da CPU;
Tecnologia de Processo de fabricação CMOS de 0,35 microns. A versão de 333 MHz usa o
processo de 0,25 microns;
Encapsulamento em cartucho SEC (“Single-Edge Contact”) de 242 pinos, diferentemente do
Pentium PRO, o qual usava soquete ZIF (“Zero Force Insertion”);
Suas primeiras versões, com arquitetura idêntica, operam nas velocidades de 233, 266, 300 e
333 MHz. Versões a 350 e 400 MHz, trazem ligeiras diferenças;
Opera na velocidade interna de 66 MHz FSB (“Front-Side Bus”), exatamente como o Pentium
PRO;
Possui 5 unidades de execução, como no Pentium PRO;
Alimentação de 2,8 Volts;
Endereçamento físico de até 64 Gigabytes;
7,5 milhões de transistores integrados;
Suporte para até 2 processadores em uma placa, permitindo o multiprocessamento simétrico
(“SMP”);
Segundo a INTEL, sua arquitetura foi otimizada para aplicações de 32 bits;
Usa a interface de barramento chamada SLOT 1, diferentemente do Socket 7 do Pentium MMX.
A interface SLOT 1 deverá ainda ser usada até o início do ano 2000 em versões mais avançadas
deste processador, tais como o Katmai 450 e 500 MHZ e o Coppermine 533 a 6xx MHz;
2.6.2 - Benchmarks
A Figura 24 apresenta o iCOMP 2.0 (Benmchmark Multimídia da INTEL) para várias versões do
Pentium II, excluindo-se a versão de 333 MHz. Em seguida é exibida na Figura 25, uma CPU
Pentium II na presença de uma interface de aceleração gráfica AGP (“Advanced Graphics Port”).
Página 51
Microprocessadores
_________________________________________________________________________________________________
____
Página 52
Microprocessadores
_________________________________________________________________________________________________
____
Figura 24 – Desempenho do Pentium II Relativo ao Pentium MMX e PRO
Página 53
Microprocessadores
_________________________________________________________________________________________________
____
Figura 25 – Benchmarks de processadores INTEL, AMD e CYRIX
Fonte: www.tomshardware.com
Página 54
Microprocessadores
_________________________________________________________________________________________________
____
2.6.3 – Implicações no Desempenho de Desktops e Servidores de Rede
Obs.: Transparências mostradas em sala de aula
2.7 – Últimos Microprocessadores da INTEL
Pode-se identificar 3 linhas ligeiramente diferentes de processadores da INTEL:
1.
2.
3.
4.
Pentium II passando a Pentium III
Celeron e
Itanium (antigo codnome Merced)
Próximas CPUs: McKinley, Madison, Deerfield, ...
Linha Pentium II
1.
Pentium II - KLAMATH
Página 55
Microprocessadores
_________________________________________________________________________________________________
____
•
•
•
•
•
KLAMATH – Antigo codinome da primeira versão do Pentium II;
512 KB de Cache L2 a ½ velocidade nas versões de 266 a 300 MHz;
Arquitetura P6 (mais evoluída do que a do Pentium PRO – P55C);
Processo de fabricação CMOS de 0,35 microns (igual ao do Pentium PRO);
66 MHz FSB (“Front-Side Bus”).
2.
Pentium II - DESCHUTES
•
•
•
•
•
Segunda versão do Pentium II;
512 KB de Cache L2 a ½ velocidade na versão de 333 MHz;
Arquitetura P6;
Processo de fabricação CMOS de 0,25 microns;
100 MHz FSB (“Front-Side Bus”) nas versões de 350 e 400 MHz.
3.
Pentium III (codnome Katmai)
•
•
•
•
•
•
•
•
Terceira versão do Pentium II;
Conjunto de Instruções com 70 novas instruções MMX2 ou KNI (“Katmai New Instructions”);
Registradores de 128 bits;
512 K de cache nível 2;
Arquitetura P6;
Suporte a DirectX 6.1;
Barramento do sistema de 100 e 133 MHz FSB;
Versões de 450, 500, 533, 550, 600, 650, 677, 700, 750, 733, 750, 800, 850, 866 e 1000 MHz.
4.
Pentium III - COPPERMINE
•
•
•
•
•
•
•
Versão menor do KATMAI;
Processo de fabricação CMOS de 0,18 microns;
Conjunto de Instruções MMX2 ou KNI (“Katmai New Instructions”);
256 KB de Cache L2 na velocidade do Clock e dentro da pastilha (on die);
Arquitetura P6;
Caminho de dados de 256 bits (mais do que os 64 bits dos Pentium II e III anteriores);
100 MHz FSB nas versões de 450 e 500 MHz.
5.
Pentium II - XEON
•
•
•
•
•
•
Núcleo do DESCHUTES;
Processo de fabricação CMOS de 0,25 microns;
512 KB ou 1 MB de Cache L2, “full speed” (operando na mesma velocidade do núcleo), fora da
pastilha, em 400 MHz;
100 MHz FSB em SDRAM;
Arquitetura Dual, P6;
4 GB de RAM Principal e 64 GB de RAM endereçável.
6.
Pentium III Xeon (Tanner) – 500 e 550 MHz)
•
•
•
•
Pentium II Xeon com KNI;
Suporte a operação com até 8 processadores;
Encapsulamento SECC (Single Edge Contact Cartridge);
512 KB/1 MB/2 MB (500 MHz) e 512 KB (550 MHz) de cache em CSRAM L2, “full speed”, fora
da pastilha;
32 KB (16 K para dados + 16 K para instruções) de cache nível 1;
•
Página 56
Microprocessadores
_________________________________________________________________________________________________
____
•
100 MHz FSB, indo para 133 MHz FSB;
7.
Pentium II - CASCADES
•
•
•
•
•
Versão Menor do Tanner;
Processo de fabricação CMOS de 0,18 microns;
256 KB de Cache L2, “full speed”, dentro da pastilha (“on-die”);
133 MHz FSB;
Clock maior do que 600 MHz.
Linha CELERON
1.
CELERON (versão sem cache)
•
•
•
•
•
•
Núcleo do DESCHUTES em 0,25 microns;
Sem Cache L2;
Arquitetura P6 (do Pentium PRO);
Interface em SLOT 1 (encapsulamento do Pentium II);
66 MHz FSB;
Descontinuado em 1999.
2.
CELERON (codnome Mendocino) (versão com 128 K da cache)
•
•
•
Nova versão do CELERON;
Encapsulamento PPGA de 370 pinos (Plastic Pin Grid Array);
Versões de 400 e 433 MHz em encapsulamento SEPP de 242 contactos (Single Edge
Processor Package)
128 KB de Cache L2 dentro da pastilha (“on-die”);
32 KB (16 K para dados + 16 K para instruções) de cache nível 1;
Arquitetura P6 (do Pentium Pro)
Barramento de sistema de 66 MHz FSB;
Versões de 400, 433, 466, 500 e 533 MHz;
Interface Slot 1 deverá ser abandonada, passando a slot 2;
•
•
•
•
•
•
ITANIUM (codnome Merced)
•
•
•
•
•
•
•
•
•
•
Lançamento previsto para o ano 2000;
Usará Interface SLOT M (nova);
EPIC (“Explicit Parallel Instruction Computing”);
128 registradores de Inteiros;
128 registradores de Ponto Flutuante;
Múltiplas Unidades de Inteiros e de Ponto Flutuante;
Arquitetura de 64 bits (precisará de sistema operacional de 64 bits);
Frequência de Relógio provável de 1 Ghertz;
Mais de 30 milhões de transistores integrados;
Processo de fabricação de 0,18 ou 0,13 microns.
Página 57
Microprocessadores
_________________________________________________________________________________________________
____
CAPÍTULO 3: CARACTERÍSTICAS GERAIS DOS SISTEMAS DE
BARRAMENTOS
3.1 – OS BARRAMENTOS PRINCIPAIS ISA, EISA E MCA
Os barramentos ISA 8 bits e ISA 16 bits foram os barramentos utilizados pelos primeiros
microcomputadores realmente populares do mercado. A sigla ISA significa “Industry Standard
Architecture”. Os famosos PCs XT utilizavam o ISA 8 bits, que suportava placas de expansão
contendo um único pente. Já o ISA 16 bits suporta placas de expansão contendo dois pentes
separados por uma ranhura. Este barramento é também conhecido no jargão técnico como “AT”. Os
famosos XTs baseava-se em CPUs 8088 ou 8086. Já os PCs AT baseavam-se em CPUs 80286,
80386 e até i486.
Na arquitetura ISA, a comunicação com os periféricos é gerenciada pelo microprocessador e
realizada através de canais de E/S. As transferências se davam de 16 em 16 bits (tamanho do
barramento de dados) a uma frequência de apenas 8 MHz, mesmo na presença de um processador
mais rápido, como por exemplo, o 486DX4/100. Isto se tornou um problema com o aumento da
velocidade dos microprocessadores. A taxa de transferência fica restrita a 1 MBytes/segundo.
Surgiram então novas propostas de barramento principal para os microcomputadores do mercado,
entre as quais as propostas EISA e MCA.
O Barramento EISA ("Extended Industry Standard Architecture") de 32 bits foi um produto
resultante da formação de um consórcio composto de fabricantes de "clones" ("Gang of Nine") ou a
Gang dos Nove, nominalmente: Wyse, AST Research, Tandy, Compaq, Hewlett-Packard, Zenith,
Olivetti, NEC e Epson, mnemonicamente chamado, "WATCHZONE".
O argumento desses fabricantes era o de que sempre procuraram oferecer aos seus usuários
produtos de mais baixo custo e com ampla disponibilidade de placas de expansão, qualidades que
na época (e nem hoje) não eram (não são) encontradas na opção pelo barramento MCA.
Para que o barramento EISA fosse compatível com a maioria das placas (ISA 8 e ISA 16) já
disponíveis no mercado, os conectores da placa mãe (onde se encaixam as placas de expansão)
dos microcomputadores foram mudados para conectores EISA/ISA. Ou seja, tanto placas ISA de 8
ou 16 bits, quanto placas EISA podiam e podem ser inseridas nos slots do sistema.
O artifício consistiu de dotar o conector de duas linhas de contactos, uma ISA e outra EISA. Placas
ISA penetram até a metade do conector fazendo uso da primeira linha de contatos (compatível ISA 8
e 16 bits). Placas EISA penetram completamente no conector fazendo uso da segunda linha de
contatos (compatível EISA). A profundidade de penetração das placas é determinada pelo número de
ranhuras das placas. No caso das placas ISA existe somente uma única ranhura e no das placas
EISA existem 6 ranhuras (uma ranhura maior e cinco menores). Assim, a profundidade dos contatos
do pente das placas de expansão EISA passa dos atuais 0,79 cm para 1,32 cm.
O Barramento MCA ("Micro Channel Architecture"), também de 32 bits, embora tenha havido
uma versão de 16 bits, foi o padrão de barramento adotado pela IBM para os slots de um micro ou
supermicrocomputador, o qual era incompatível com os barramentos ISA (8 bits e 16 bits). Mesmo
com a decisão da IBM de abrir o projeto de seu barramento para outros fabricantes de placas de
expansão, o padrão ISA/EISA fez parte da maioria dos sistemas 486 disponíveis no mercado
americano e brasileiro da época.
Segundo artigo da revista BYTE americana de novembro de 1989, o barramento EISA permite a taxa
de transferência máxima de 33 Megabytes/segundo, enquanto no barramento MCA 16 bits esta taxa
Página 58
Microprocessadores
_________________________________________________________________________________________________
____
cai para 20 MBytes/segundo. Ainda segundo a mesma revista, as placas EISA são mais baratas e
de fabricação mais fácil. Matérias na revista PC Magazine Brasil de agosto de 1992 apontavam o
desempenho de 40 Mbytes/segundo para o barramento MCA de 32 bits numa frequência de relógio
da ordem de 10 MHz, diferentemente dos 8,0 Mhz utilizados nos ISA e EISA).
3.2 – OS BARRAMENTOS LOCAIS SECUNDÁRIOS VESA, PCI E AGP
Independentemente dos barramentos principais, surgiram no mercado, no início da década de 90,
máquinas fazem uso de um barramento local ("Local Bus"), ou seja, máquinas que implementam
uma conexão direta entre a CPU e a parte de I/O. Assim, o tráfego de dados da CPU para os
periféricos fica na velocidade da CPU, atingindo um desempenho de até 200 MegaBytes/segundo.
O Barramento VESA
A Video Electronics Standards Association – VESA - baseada na idéia de que as interfaces de vídeo
integradas à placa-mãe eram uma limitação às rápidas atualizações que surgiam a todo momento no
mercado de vídeo, lançou um padrão de conexão para placas de vídeo. A associação já existia antes
do advento do barramento local e cuidava de padrões de arquitetura e compatibilidade de projetos
relacionados a vídeo de alta performance.
Assim, em 1992, foi elaborado um projeto de barramento de 32 bits, direcionado originalmente às
interfaces de vídeo. O padrão VL-Bus, como ficou conhecido, teve aceitação imediata, não só pelas
definições de vídeo como também por sua arquitetura aberta, que permitia a implementação de
outros tipos de interfaces de barramento local, como de discos e redes.
O VESA Local Bus veio introduzir o conceito de barramento próprio, interligado diretamente à CPU.
Operando em 32 bits e na mesma frequência do processador principal o barramento VESA consegue
taxas de transferências de até 132 MB/s, mas somente no modo rajada (“Burst”).
Basicamente, o barramento VESA duplica os sinais do 486, o que reduz o custo do projeto das
placas-mães e melhora sensivelmente o desempenho em relação ao barramento ISA.
Uma das limitações deste barramento é quanto à frequência e número de conectores, ou placas a ele
conectadas. Isto ocorre por estar ligado diretamente ao barramento do processador e operar em
frequências muito altas. Assim, o número de periféricos conectados é de no máximo três. Os
projetistas podem acrescentar mais conectores, além do número máximo recomendado pela
associação, mas fazendo isto sacrificariam a velocidade do barramento.
O VL-Bus, da VESA, desenvolveu uma maneira de acelerar gráficos, descarregando-os do
barramento ISA, mais lento. Antes da adoção do padrão VESA, foram desenvolvidos alguns
barramentos locais proprietários, que davam poucas opções aos usuários, pois seus conectores não
eram padronizados. Com a nova versão 2.0, o VESA VL-BUS soluciona muitas das limitações do
seu antecessor. O barramento pode operar a 50 MHz, possuindo um caminho de dados de 64 bits,
ao invés de 16 ou 32. A VESA produziu um procedimento para testes de compatibilidade e
conformidade para adaptadores. Com isto, os fabricantes de placa podiam colocar um logotipo
"compatível com VESA" na caixa.
A maioria das empresas nacionais suportavam o padrão VL-Bus. Este não somente foi, em sua
época, o mais difundido, como era o padrão para o qual havia o maior número de placas de expansão
do mercado.
O Barramento PCI
O Barramento PCI (Peripheral Component Interconnect), outra arquitetura com barramento local, foi
criado pela Intel logo após o VESA. O Local Bus PCI veio aperfeiçoar o conceito VESA, introduzindo
um controlador de periféricos padronizado e definindo uma frequência fixa de operação em 33 MHz.
Página 59
Microprocessadores
_________________________________________________________________________________________________
____
O resultado foi um barramento mais barato que o EISA e MCA, embora um pouco mais caro que o
VESA.
A diferença básica entre o PCI e o VL-Bus está no projeto. Mais moderno e com capacidade para
suportar futuras alterações no hardware dos PCs, o PCI reúne características que o tornaram mais
atraente e mais enxuto que o VESA.
Além de ter sido projetado prevendo ambientes com múltiplos processadores, o PCI define o uso de
componentes multimídia no barramento local. O bus mastering também é suportado, junto com uma
linguagem própria de controle de barramento.
Segundo a Intel, placas desenhadas para serem usadas em barramento PCI funcionam em qualquer
máquina, seja ISA, EISA ou MCA.
Outra característica existente nas especificações do PCI e ausente do VESA é a facilidade de
configuração. As placas PCI são autoconfiguráveis, dispensando ajustes por jumpers ou chaves DIP.
Para isso, porém, todas as placas precisam ter 256 registradores, para armazenamento de
informações, dispostos de uma certa maneira para assegurar a compatibilidade entre diversos
computadores.
O PCI tem como características o barramento assíncrono e a arquitetura multiplexada, possui uma
largura de barramento de 32 ou 64 bits, o que o torna mais apropriado para processadores baseados
no chip Pentium. É um barramento do tipo mezzanino, significando que ele é independente do
barramento do processador. Além disso, a especificação do PCI é mais precisa do que a do VESA e
isto já resultou em incompatibilidades em adaptadores VESA. Finalmente, o PCI não é dedicado a
um processador INTEL x86, mas também pode ser usado por processadores Motorola.
O PCI supera, atualmente, tudo o que existe em máteria de barramento de comunicação,
apresentando taxas de transferência de dados na ordem de 132 MB/s em 32 bits e de até 264 MB/s
em 64 bits. Em relação ao número de slots de expansão, o PCI permite o controle de até 10
dispositivos auto-configuráveis de alto desempenho.
Na comunicação de vídeo, o PCI supera todas as expectativas, apresentando uma performance 3
vezes superior a uma VGA ISA e 3 vezes a de uma VGA-VESA.
Os dois barramentos locais descritos têm praticamente a mesma velocidade em 32 bits, atingindo
picos de desempenho de 132 MB/s, mas este número pode variar muito, se forem considerados os
estados de espera e as operações do modo burst.
A tabela 1 procura relacionar as várias velocidades envolvidas nos barramentos mencionados. A
Tabela 2 exibe não só a limitação de 33 MHz do barramento PCI, como a relação entre a velocidade
da máquina e o CHIPSET da mesma.
Barramento
ISA 8
ISA 16
ISA 16
MCA 16
MCA 32
EISA
PCI 32
PCI 32
PCI 32
Relógio PlacaVelocidade no
Mãe (MHz)
Barramento de Dados
(MHz)
8
8
8
10
8
8
33
25
30
33
Tamanho do
Barramento de
Dados (bits)
Velocidade no
Barramento
(Mbytes/s)
8
16
32
16
32
32
8
16
32
132
20
40
33
Página 60
Microprocessadores
_________________________________________________________________________________________________
____
PCI 64
64
264
Tabela 1 - Desempenho de Barramentos da Placa-Mãe
CPU
P60
P66
P75
P90
P100
P120
P133
P150
P166
P200
6X86-120
6X86-133
6X86-150
6X86-166
6X86-200
K6-166
K6-200
K6-233
PPRO 180
PPRO 200
PMMX 166
PMMX 200
PMMX 233
PII 233
PII 266
PII 300
CLK da
Placa-Mãe
(MHz)
60
66
50
60
66
60
66
60
66
66
50
55
60
66
66
66
66
66
60
66
66
66
66
66
66
66
CLK x
CLKIN da
CPU (MHz)
Chip Set
(CK/2)
1
1
1,5
1,5
1,5
2
2
2,5
2,5
3
2
2
2
2
3
2,5
3
3,5
3
3
2,5
3
3,5
3,5
4
4,5
60
66
75
90
99
120
132
150
165
198
100
110
120
132
198
165
198
231
180
198
165
198
231
231
264
297
30
33
25
30
33
30
33
30
33
33
25
?
30
33
33
33
33
33
30
33
33
33
33
33
33
33
Velocidade no
Barramento de
Dados (Mbps)
30
33
25
30
33
30
33
30
33
33
25
?
30
33
33
33
33
33
30
33
33
33
33
33
33
33
Velocidade
Placa de
Vídeo (Mbps)
15
16,5
12,5
15
16,5
15
16,5
15
16,5
16,5
12,5
?
15
16,5
16,5
16,5
16,5
16,5
15
16,5
16,5
16,5
16,5
16,5
16,5
16,5
A arquitetura P54C (Pentium Clássicos - de 60 a 200 MHz) suporta os multiplicadores de 1,5 a 3
A arquitetura P55C (Pentium PRO - de 180 a 200 MHz) possui os multiplicadores de 2,5 a 4
A arquitetura P6 (Pentium II - de 233 a 333 MHz) possui os multiplicadores de 3,5 a 5
Tabela 2 - Desempenho do Barramentos de Dados
O Barramento AGP
O Barramento AGP (“Accelerated Graphics Port”) é uma nova plataforma de especificação de
barramento direcionada para capacidades gráficas de alto desempenho, em particular, gráficos 3D.
Tais aplicações requerem grande área armazenamento de informações a fim de que a imagem 3D do
monitor possa ser “refrescada” ou atualizada o mais rápido possível.
Página 61
Microprocessadores
_________________________________________________________________________________________________
____
A interface AGP é promovida pelo A.G.P. Implementors Forum, o qual provê suporte e facilidades na
adoção da especificação. Fazem parte deste Forum vários fabricantes de PCs, assim como
fabricantes de componentes gráficos.
Esta interface, como é conhecida, adiciona novas características às placas aceleradoras gráficas,
tais como: acesso em pipeline dedicado à memória principal e taxas de transferência mais rápidas.
Esta interface não é concorrente do barramento PCI, pois foi projetada pela INTEL especialmente
para uso dedicado por controladores gráficos e não para substituir o PCI. Este permanece um padrão
para um sistema de barramento de I/O, de uma maneira mais geral.
A interface AGP foi projetada para componentes gráficos ponto-a-ponto e é fisicamente separada do
barramento PCI, usando um conector separado. A AGP permite alocação dinâmica da memória
principal, tornando-a mais flexível.
Esta interface está incorporada à maioria das placas-mães de hoje baseadas no processador
Pentium II. A figura 26 mostra um diagrama de blocos da interface AGP, na presença dos
componentes da placa-mãe.
Figura 26 – A Interface AGP
A Figura 27 (fonte: www.tomshardware.com/agp.html#AGP - Some Critical Thoughts) procura exibir as
taxas de transferência envolvidas no barramento AGP.
Página 62
Microprocessadores
_________________________________________________________________________________________________
____
No artigo mencionado, o autor procura demonstrar que o pico teórico para o AGP é de 528 MBytes/s
(8 x 66 Mbits/segundo), pois a atual limitação do transporte de dados da CPU para a memória
principal está em 66 MHz do Clock do barramento: “Therefore AGP will never be able to get a
throughput of 528 MB/s, since this is the whole bandwidth of main memory and thus it has to
be shared with CPU and others” . E mais, esta taxa somente é válida com o uso de memórias
SDRAM, pois em memórias do tipo EDO é consideravelmente mais lenta. O autor explica que o que
o AGP realmente necessita é que o barramento principal das máquinas suba para 100 MHz
(chegando atualmente ao mercado), quando então o pico teórico seria de 800 Mbytes/s.
Existem propostas concorrentes do AGP da INTEL, as quais colocam nas placas gráficas a memória
necessária ao refrescamento do vídeo e não usam a memória principal do sistema que é
compartilhada por todos os outros periféricos. A INTEL raciocina que isto pode resultar em um custo
mais elevado do que proposta AGP, em função do alto custo das memórias.
Figura 27 – Desempenho da Interface AGP
A figura 28 exibe um benchmark entre uma placa gráfica com barramento PCI e uma com
barramento AGP. Enfatiza-se que os barramentos, como mencionado anteriormente, não são
comparáveis, uma vez que se destinam a diferentes objetivos. Notar que em resoluções normais,
640x480 pixels, não há praticamente diferença de desempenho entre as duas placas testadas.
Página 63
Microprocessadores
_________________________________________________________________________________________________
____
Figura 28 – Benchmark entre duas placas gráficas – AGP e PCI
O propósito de um barramento de expansão é prover um caminho para usuários adicionarem
dispositivos de hardware (placas em slots) em um PC, usando conectores padronizados. O que
difere uma proposta de outra são vários aspectos. A Tabela 3 compara os atributos do sistema para
os barramentos ISA 8 bits e ISA 16 bits.
Atributo do Sistema
Processador
Modos da CPU
Slot de Expansão
Tipo de slot
Interrupções
Canais de DMA
RAM máxima
Controlador Disco Flexível
PC ou XT
8088/8086
Real
8 bits
ISA 8 bits
8 + NMI
4
1 MB
360 KB / 720 KB
PC AT Clássico
286 e maior
Real/Protegido
16 bits
ISA 16 bits
16 + NMI
8
16 MB
1.2 MB / 1.44 MB
Tabela 3 – Barramentos ISA 8 bits e 16 bits
Com o avanço tecnológico e o surgimento do INTEL 80386, com um barramento de dados de 32 bits,
a paz nas indústrias terminou e, como já mencionado, surgiu uma briga entre o MCA da IBM e o
EISA da Gang dos Nove, vencida pelo EISA em termos mercadológicos. A Tabela 4 exibe uma
comparação entre o EISA e o ISA 16 bits.
Atributo do Sistema
Capacidade de Memória
Largura do Bus de Dados
Faixa de DMA
Caminho de dados do DMA
Máxima Taxa de DMA
Arbitração de Barramento
Caminho de dados do Bus
Master
Clock Síncrono
ISA 16 bits
EISA
16 MB
16 bits
16 MB
8/16 bits
2 Mbytes/s
Única
16
4 GB
32 bits
4 GB
8/16/32 bits
33 Mbytes/s
6 Bus Masters
16/32
8.33 MHz
8.33 MHz
Tabela 4 – ISA 16 bits e EISA
Para finalizar este capítulo, vale ressaltar alguns aspectos do barramento PCI.
O PCI é considerado um barramento “mezzanino”, ou seja, nem ligado diretamente à CPU, nem
ligado diretamente aos dispositivos de I/O. É divorciado da CPU, dando a esta alguma independência
e a abilidade de competir com mais dispositivos. É multiplexado no tempo, significando que linhas de
endereços e linhas de dados compartilham conexões. Possui um modo de rajada próprio, o qual
Página 64
Microprocessadores
_________________________________________________________________________________________________
____
permite que um ciclo de endereço pode ser seguido por tantos ciclos de dados quanto o overhead
do sistema permitir.
A 33 MHz pode transferir 32 bits por período de relógio, implicando numa taxa de 132 MBytes/s (4
bytes x 33 Mbits/s). A especificação 2.1 do PCI inclui um barramento de 64 bits a 66 MHz,
implicando em uma taxa teórica máxima de 528 MBytes/s (8 bytes x 66 Mbits/s), conforme exibido
na Figura 27.
3.3 – OS BARRAMENTOS SECUNDÁRIOS IDE E ENHANCED IDE
Atualmente há dois tipos de barramentos, ditos aqui, secundários: O EIDE (“Enhanced Integrated
Drive Eletronics”) e o SCSI (“Small Computer System Interface”). Nesta seção trataremos
destes dois tipos. Na literatura técnica, normalmente este barramento é chamado de interface.
Portanto, a partir deste momento usaremos os dois termos indistintamente.
A interface IDE
Esta interface se tornou padrão de mercado durante muitos anos por dois bons motivos: a facilidade
de uso e o baixo custo. Desenvolvida pela Western Digital e pela Compaq, foi uma evolução natural
da interface de disco original do IBM AT - a ST 506 - apresentada em 1984. As controladoras IDE (e
não EIDE) não possuiam ROM na placa, pois os sistemas IBM PC AT e compatíveis dispunham de
rotinas internas da BIOS para suportar este padrão de disco rígido. As controladoras IDE usam
endereços de portas I/O de 1F0 a 1F7 para os registradores de controle e IRQ14 para o atendimento
às interrupções.
A antiga controladora IDE continha um pequeno cache de disco, que variava de 32 a 512 KB, o qual
proporcionava um ganho de desempenho. Os discos IDE possuem a controladora integrada no
próprio disco. A controladora é conectada ao barramento do sistema usando um único cabo de fita
achatada. Ele é acoplado a um conector de 40 pinos na placa-mãe ou numa placa adaptadora
separada. A placa é simplesmente uma interface para o barramento do sistema PC.
Uma de suas características populares é a transparência. Não é necessário um driver especial para
um disco IDE, pois este é definido e suportado na BIOS do sistema e na própria interface IDE.
As desvantagens principais da interface IDE são: a limitação no tamanho dos discos que podem ser
acoplados e nas taxas de transferência de dados que podem ser alcançadas.
A capacidade dos drives IDE é restringida não pela BIOS ou pela interface individualmente, mas pela
combinação das duas. Tanto a BIOS do PC padrão, quanto a interface IDE suportam drives de
grande capacidade. Entretanto, quando combinadas, não conseguem suportar drives acima de 528
MB, devido aos diferentes números de bits que cada uma reserva para definir as diferentes
características: cilindros, cabeças e setores por trilha - de um drive.
A taxa de transferência de uma unidade IDE está limitada ao máximo de 5 MBytes/s, num
barramento ISA. Uma placa IDE controlava no máximo dois discos rígidos e dois acionadores de
discos flexíveis.
A Interface EIDE
O barramento IDE possui atualmente uma versão mais avançada, chamada de EIDE (“Enhanced
IDE”), com melhor desempenho, mais recursos, suportando até 4 drives de (dois canais) dispositvos
conectados ao barramento, incluindo CD-ROMs e melhor aproveitamento do barramento local, seja
VESA ou PCI. Os discos do antigo padrão IDE tinham no máximo 528 MB e velocidade máxima de 5
MBytes/s, enquanto os EIDE chegam até 8,4 GB, tamanho máximo de disco e arquivo reconhecido
pelo Windows NT, por exemplo. A velocidade máxima atingida por esses discos é 13,3 MBytes/s.
Em condições normais a taxa alcançada pelo EIDE é de 10 MBytes/s.
Página 65
Microprocessadores
_________________________________________________________________________________________________
____
3.4 – OS BARRAMENTOS SECUNDÁRIOS SCSI
O Barramento SCSI
A interface SCSI é uma interface de propósito geral usada para acoplar vários dispositivos de I/O ao
computador. Esta consiste num barramento paralelo de 8 bits que pode suportar até oito
dispositivos, entre discos rígidos, acionadores de discos flexíveis, CD-ROMs, fitas DAT, Scanners e
a própria placa controladora. Cada um possui um controlador próprio, que recebe instruções através
do barramento. A placa de interface SCSI, que ocupa um conector de expansão do PC, é chamada
de placa hospedeira. Ela controla o barramento SCSI, envi ando comandos e dados para os
dispositivos, recebendo confirmações e dados dos mesmos.
O barramento SCSI usa um protocolo de comandos e não uma interface de unidade. Para ler um
bloco de dados, a placa hospedeira envia um comando através do barramento, como uma sequência
de bytes. O dispositivo alvo decodifica e executa, enviando depois os dados. Teoricamente, isto
oferece independência de dispositivo. Na prática, entretanto, nem sempre isto se verifica, devido às
variações nas implementações de diferentes fabricantes.
O padrão SCSI define um tipo de dispositivo que possui algoritmo interno de manipulação das
requisições de leitura e escrita de dados. Ao contrário das interfaces IDE, que operam numa relação
Mestre-Escravo, as controladoras SCSI podem reordenar as requisições aleatórias de dados,
provenientes de diversos dispositivos, para minimizar o tempo de busca das informações.
Os discos rígidos SCSI têm capacidade que varia desde 200 MB (mínimo recomendável) até
dezenas de gigabytes, não precisando de nenhum recurso especial de configuração. Vale lembrar
que o DOS 6.22 e o Windows 3.11 “viam” arquivos e discos de até 2 GB, apenas. Essas diferenças
refletem-se nas aplicações destinadas aos dois tipos de interface (SCSI e IDE). Os sistemas SCSI
são recomendados para ambientes que exijam segurança, rapidez e suporte a vários dispositivos.
Os discos SCSI são atualmente divididos em SCSI-1, SCSI-2 e SCSI-3. O SCSI-1 é o primeiro
padrão, define um barramento paralelo de 8 bits, que suporta tranferências de até 5 MBytes/s.
O SCSI-2 surgiu logo depois da consolidação do primeiro padrão. O SCSI-2 suporta um barramento
mais rápido, de 16 ou 32 bits e mantém a compatibilidade com o anterior, de 8 bits. O SCSI-2 foi
divulgado publicamente em 1990 e pode atingir, teoricamente, a taxa de transferência de até 40
MBytes/s.
Os dispositivos SCSI-2 que suportam o barramento mais rápido, de 10 MBytes/s, são chamados
Fast SCSI, enquanto os que aceitam barramento de 16 ou 32 bits de 20 MBytes/s, são conhecidos
como Wide SCSI. Existem ainda interfaces e dispositivos que combinam esses dois padões, o Fast
SCSI e o Wide SCSI, que podem atingir velocidades de até 40 MBytes/s. O padrão SCSI-3 é um
barramento de 16 bits, com velocidade de até 40 MBytes/s, cabeamento de fibra óptica, podendo
suportar de 8 a 32 dispositivos.
Uma controladora SCSI Disk Array possui alta performance e confiabilidade. Dentro do Disk Array,
todos os discos são vistos como um só. Isto possibilita a distribuição dos dados pelos vários discos,
permitindo um acesso de alto desempenho através de operações de I/O simultâneas. Além disso, o
Disk Array dispõe de várias implementações de RAID (Redundant Array of Inexpensive Disk) que
garantem a integridade das informações, como o mirroring (espelhamento) e a técnica de paridade.
A Tabela 5 exibe um resumo das velocidades alcançadas pelos diversos padrões de barramento
secundário.
Barramento
IDE
Dados
Conector
(pinos)
Periféricos
(número)
Taxa de Transferência
(Mbytes/s)
16
40
2
5
Página 66
Microprocessadores
_________________________________________________________________________________________________
____
EIDE
SCSI
Fast SCSI-2
Fast & Wide SCSI-2
Ultra Fast Wide SCSI-2
16
8
8
16
16
40
50
50
68
68
4
8
8
8
32
10
5
10
20
40
Página 67
Microprocessadores
_________________________________________________________________________________________________
____
CAPÍTULO 4: SUPORTE AO DESENVOLVIMENTO DE
SOFTWARE BÁSICO
4.1 – ESTRUTURA DE UM PROGRAMA NA MEMÓRIA
A Figura 29 exibe a evolução da estrutura de um programa na memória, desde o 8085 até o i486.
80386/i486
8086/8088
8080/8085
FFFFFFFF
FFFFF
FFFF
Pilha
64 KB =>
Código
Dados 1
Pilha
Dados
4.0 GB => Dados 2
Dados
1.0 MB =>
0000
Pilha
Extra
Código
Código
00000
00000000
Figura 29 – Estrutura de um Programa na Memória (do 8085 ao i486)
4.2 – MONTADORES, CARREGADORES E DEPURADORES DE LINGUAGEM
ASSEMBLY
O desenvolvimento de software em linguagem Assembly assemelha-se em muito com o
desenvolvimento de software em linguagens de alto nível, como C, PASCAL, FORTRAN, etc. No
caso das linguagens de alto nível temos programas editores, compiladores, ligadores e depuradores
para auxiliar no desenvolvimento de software.
O processo de desenvolvimento de software é mostrado na figura 30.
COMPILADORES
Módulo Fonte ou
Programa Fonte
MONTADORES
LIGADORES
Módulo Objeto ou
Programa Objeto
Módulo de Carga ou
Programa Executável
CARREGADORES
Página 68
Microprocessadores
_________________________________________________________________________________________________
____
Figura 30 – Processo de Desenvolvimento de Software em Assembly
A linguagem Assembly depende do microprocessador utilizado. Mesmo microprocessadores da
mesma família possuem conjuntos de instruções diferentes. As linguagens são dependentes da
arquitetura do microprocessador e exigem o conhecimento desta.
No caso das linguagens de baixo nível têm-se MONTADORES, CARREGADORES e
DEPURADORES. Em seguida, são dadas as respectivas definições.
•
MONTADORES: São programas que traduzem o programa fonte escrito em linguagem Assembly
para programas objetos. Montadores testam a correção da sintaxe utilizada pela linguagem para
representar o programa fonte;
•
CARREGADORES: São programas que transferem o conteúdo do programa objeto, já montado,
da memória secundária para a memória principal do microcomputador;
•
DEPURADORES: São programas que auxiliam no processo de testar a correção do programa
objeto. Depuradores testam a semântica do programa objeto já montado.
4.3 - USO DE UM DEPURADOR DE LINGUAGEM ASSEMBLY
O formato típico de uma linha fonte inclui os campos RÓTULO, MNEMÔNICO, OPERANDO(S) e
COMENTÁRIOS, separados por caracteres separadores de campos, tais como ":" e ";".
Têm-se três tipos de linhas fonte: INSTRUÇÕES, DIRETIVAS e CONTROLES (próprios de cada
montador Assembly ou "Assembler").
O montador Assembly do 8080/Z80, a partir de um arquivo ".ASM" gera dois tipos de arquivo, um em
formato hexadecimal, ".HEX" (programa objeto) e outro em formato hexadecimal mais o programa
fonte original, ".PRN" (este último pode ser impresso). O carregador usa como entrada o arquivo em
hexadecimal para gerar um programa executável, ".COM", como saída.
Existem vários montadores Assembly para o 8086/8088, entre eles o chamado MASM ("Macro
ASseMbler Programming"). A figura abaixo mostra o processo de geração de arquivos com o MASM
e demonstra o uso de um depurador Assembly.
C:\>edlin arq.asm
...
C:\>masm arq;
...
C:\>link arq;
...
C:\>debug arq.exe
==> Gera arq.asm
==> Gera arq.obj
==> Gera arq.exe
==> Depura arq.exe
-A 100
0939:0100 MOV AH,2
0939:0102 MOV DL,21
0939:0104 INT 21
0939:0106 INT 20
0939:0108 <Enter>
==> Assemblar
-U 100 106
==> Desassemblar (“Unassenbly”)
Página 69
Microprocessadores
_________________________________________________________________________________________________
____
0939:0100 B402
0939:0102 B221
0939:0104 CD21
0939:0106 CD20
MOV
MOV
INT
INT
-R
AH,02
DL,21
21
20
==> Mostrar conteúdo dos Registradores
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0939 ES=0939 SS=0939 CS=0939 IP=0100 NV UP DI PL NZ NA PO NC
0939:0100 B402
MOV AH,02
-T
==> Executa passo-a-passo (“Trace”)
AX=0200 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0939 ES=0939 SS=0939 CS=0939 IP=0102 NV UP DI PL NZ NA PO NC
0939:0102 B221
MOV DL,21
-T
==> Executa passo-a-passo
AX=0200 BX=0000 CX=0000 DX=0021 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0939 ES=0939 SS=0939 CS=0939 IP=0104 NV UP DI PL NZ NA PO NC
0939:0104 CD21
INT
21
-G
==> Executa programa (“Go”)
!
Program terminated normally
-Q
==> Sai do DEBUG (“Quit”)
C:\>
Para concluir este item pode-se dizer que qualquer software em linguagem Assembly pode ser
desenvolvido e testado em um microcomputador comum para posterior gravação em memória PROM,
EPROM ou EEPROM, a qual ficaria residente no sistema controlado por microprocessador.
Programadores e apagadores de EPROM estão disponíveis no mercado para facilitar o processo de
programação física da EPROM e eventual apagamento devido a alterações no programa residente.
No caso da EEPROM, isto não é necessário, pois este tipo de memória pode ser apagado e
reprogramado (“Electricaly Erasable”) diretamente no sistema a microprocessador sem desligamento
da máquina.
Página 70
Microprocessadores
_________________________________________________________________________________________________
____
CAPÍTULO 5: CARACTERÍSTICAS GERAIS DOS
MICROPROCES-SADORES DA MOTOROLA
5.1 – O 68.000
No interior deste capítulo serão citadas, oportunamente, as diferenças entre o 68.000 e o seu
concorrente mais próximo na época, o 8086. Será dado um enfoque comparativo para que se possa
ter uma idéia das diferenças de arquitetura entre os micros da linha PC/PS e os da linha
Apple/Macintosh e suas implicações no desempenho dessas máquinas.
O nome Macintosh surgiu quando em 1796, em Ontário - Canadá, um fazendeiro de nome McIntosh
tornou popular uma maçã, lhe dando o seu nome. Jef Raskin, consumidor habitual deste tipo de
maçã e responsável, no seu início, pelo projeto de um micro revolucionário na APPLE, batizou este
micro de Macintosh (com erro voluntário de ortografia).
O 68.000 foi o primeiro microprocessador de 16 bits da MOTOROLA e o terceiro a surgir no mercado,
tendo sido precedido pelo 8086 da INTEL e pelo Z8000 da ZILOG. O 68.000 não é compatível em
software com a família de 8 bits da MOTOROLA (vide 6800). Esta optou pelo projeto de um conjunto
de instruções de máximo desempenho e simplicidade, ao invés de compatibilidade com os seus
predecessores.
O 68.000, possui características internas apropriadas para suportar o sistema operacional UNIX. Em
outras palavras, foi concebido para receber um sistema operacional multitarefa e multiusuário,
diferentemente do 8086. Nestes termos, pode-se dizer que este é muito mais potente que um 8086.
5.1.1 - Arquitetura
A arquitetura do 68.000 usava a técnica de "pipeline" para aumentar a taxa de execução de
instruções. O 8086 também fazia uso de "pipeline", utilizando para isso uma fila de 6 bytes para
código objeto.
O 68.000 endereçava 16.0 MBytes diretamente, através de suas 24 linhas de endereço, e
indiretamente 64 MBytes. O 8086 podia endereçar diretamente apenas 64 Kbytes e 1.0 Mbytes,
respectivamente, através de seus registradores de segmento.
O 68.000 operava em dois modos: modo Supervisor e modo Usuário. No Modo Supervisor o 68.000
podia executar instruções privilegiadas, não executáveis no Modo Usuário. Assim, o 68.000
suportava um sistema operacional multitarefa e multiusuário. O 8086 não possuía modos similares,
apenas a partir do 80286 pode-se contar com o suporte a ambientes multitarefa e multiusuário.
Internamente, o 68.000 possuía 17 registradores de 32 bits, sendo oito para dados e nove para
endereços (dois desses últimos reservados para apontadores de pilha). O 8086 tinha somente 4
registradores de 16 bits mais três registradores de índice separados. Esta característica trazia
vantagens em desempenho para o 68.000, uma vez que mais operações podiam ser realizadas no
interior da pastilha, evitando acessos frequentes à memória principal, o que significaria atrasos ainda
maiores no processamento.
O 68.000 em seu encapsulamento de 64 pinos possuía linhas de dados e endereços separadas. Já
o 8086 multiplexava linhas de dados e endereços em seu encapsulamento de 40 pinos, sendo então
necessária uma lógica de demultiplexação externa a pastilha para recuperar os barramentos de
dados e endereços. Se por um lado a MOTOROLA não economiza espaço, ao mesmo tempo elimina
a necessidade de circuitos adicionais na placa-mãe.
Página 71
Microprocessadores
_________________________________________________________________________________________________
____
O 68.000 era compatível em hardware com os circuitos periféricos de 8 bits da própria MOTOROLA.
Uma similaridade é encontrada no 8088 da INTEL, também compatível em hardware com os circuitos
periféricos de 8 bits da própria INTEL. As duas fábricas sempre lançam pastilhas compatíveis com
circuitos periféricos de seus antecessores.
Os tipos de dados suportados pelo 68.000 são: bit, nibble (4 bits), byte, word e long-word (32 bits).
Este opera em ponto flutuante tão rápido quanto o par 8086/8087. Aqui praticamente não existem
diferenças importantes.
5.1.2 – Diferenças no Conjunto de Instruções
O conjunto de instruções do 68.000 era composto de apenas 56 instruções básicas, podendo
atingir até 1000 combinações. O 8086 possuía um conjunto complexo de instruções em número
elevado e na sua maioria com finalidades específicas. Do ponto de vista do programador Assembly é
razoável raciocinar que este consiga programar mais rápido com um conjunto poderoso de poucas
instruções ao invés de um conjunto também poderoso, mas com um número elevado de instruções a
escolher.
5.1.3 – Capacidade de Interrupção
A MOTOROLA usa a designação de "Exceção" para o que o 8086 interpreta como "Interrupção". A
MOTOROLA considera que interrupções são casos particulares de exceções. O 68.000 tratava dois
tipos de exceção: as exceções geradas internamente e as geradas externamente, como segue.
•
Exceções Internas: procedimentos de exceção são executados quando a CPU detecta erros
internos, tais como: erros de endereçamento, violação de privilégio e códigos de operação ilegais
ou quando a CPU executa determinadas instruções de programa, tais como: TRAP e TRACE;
•
Exceções Externas: procedimentos de exceção são executados quando a CPU recebe sinais
de hardware de fontes externas, tais como: erros de barramento, reset e pedido de interrupção.
Uma tabela de vetores para processamento de exceções fica alocada na memória residente,
contendo 256 possíveis vetores para processamento de exceções (1024 bytes). No 68.000 há 7
(sete) níveis de prioridade para exceções. No 8086 havia 3 (três) níveis de prioridade de interrupção
(software, não mascarável e mascarável, nessa ordem). Isto não chega a ser uma vantagem do
68.000, uma vez que no caso de microcomputadores, tais níveis são largamente suficientes.
A vantagem do 68.000 aqui vinha do fato de que o tratamento de exceções possuía um esquema
mais direto e simples que no 8086, onde o programador tem mais preocupações. Vale ressaltar, que
quanto menor é o tempo de programação maior é a produtividade do programador e mais
rapidamente os produtos são lançados no mercado.
5.2 – O 68.010
Há pouco a dizer sobre o 68.010, a não ser que este é idêntico ao 68.000, com algumas ressalvas.
A primeira é a de que usa suporte para memória virtual, ou seja, possui os pinos e os sinais
necessários à comunicação com um circuito gerenciador de memória virtual (não disponível no
68.000). A segunda é a de que inclui algumas novas instruções, justamente para gerenciamento
desta memória virtual.
Página 72
Microprocessadores
_________________________________________________________________________________________________
____
5.3 – O 68.020
O 68.020, diferentemente do 68.010, é um microprocessador interna e externamente de 32 bits, ou
seja possui uma arquitetura interna preparada para manipular quantidades de 32 bits e acessa a
memória de dados de 32 em 32 bits. Além disso, pode endereçar diretamente 4 Gigabytes de
memória, através de seu barramento de endereços de 32 bits.
O 68.020 é dotado de 3 (três) unidades lógicas e aritméticas, possui uma memória cache interna de
256 bytes ou 64 "long-words" (32 bits) e usa uma estrutura "pipeline" de 3 instruções (busca,
decodificação e execução) de 32 bits. A busca de uma instrução no 68.020 significa um acesso a
uma instrução de 32 bits e não dois acessos de 16 bits para buscar uma única instrução (como
ocorre no 68.000 e 68.010).
O 68.020 a 16.67 Mhz é compat¡vel em código objeto com o 68.010 e possui um desempenho 6
(seis) vezes superior ao do 68.000 a 8 Mhz. Foram incluídas ainda, 20 novas instruções e dois novos
registradores foram acrescentados no modo supervisor.
5.4 – O 68.030
O antigo Mac SE/30 (CPU 68.030 a 15,667 Mhz) era 4 (quatro) vezes mais rápido que o Mac SE
(CPU 68.000). A pastilha 68.030 incorpora a unidade de gerenciamento de memória virtual ou PMMU
("Paged Memory Management Unit"). O barramento do Mac SE/30 foi mudado do NuBus (dos Mac
Plus e SE) para o chamado "Direct Slot 030", a fim de se adaptar a capacidade de endereçamento
de 32 bits do 68.030. Por isso, este microcomputador não aceitava placas de expansão usadas nas
versões anteriores.
Um outro antigo modelo, o Mac IIcx também operava sob controle da CPU 68.030, mas numa
frequência de relógio de 25 Mhz. Além disso, incorporava uma pastilha (68.882) de gerenciamento de
memória virtual e um slot adicional para cache.
Não se pode comparar a frequência de relógio de 15,76 Mhz do 68.030 com as frequências, por
exemplo do i386 33 Mhz. Arquiteturalmente diferentes, os microprocessadores da INTEL usam vários
períodos de relógio (algumas instruções necessitam de até 236 períodos de relógio) ou vários ciclos
de máquina para executarem uma instrução, enquanto que os microprocessadores MOTOROLA
usam poucos períodos de relógio (a mais longa instrução tem uma duração de apenas 74 períodos
de relógio). Portanto, as frequências baixas utilizadas pelos microprocessadores MOTOROLA não
significam baixo desempenho como se poderia precipitadamente concluir.
Um resumo das característica é listado a seguir.
•
•
•
•
•
•
•
•
Compatibilidade em código com a família 68.000;
Unidade de Ponto Flutuante fora da pastilha;
Unidade de Gerenciamento de Memória “on-chip”;
256 Bytes de cache de instruções e dados;
Interface de Memória de Rajada (“Burst”);
Mecanismo de “Dynamic Bus Sizing”, o qual permite rodar código de 8, 16 e 32 bits;
Disponível em 16, 20, 25, 33, 40 e 50 MHz;
18 MIPS a 50 MHz;
5.5 – O 68.040
Página 73
Microprocessadores
_________________________________________________________________________________________________
____
As primeiras versões de Macintosh eram baseadas na CPU 68.000. Versões mais recentes são
baseadas nas CPUs 68.040, 68.060 e Power PC.
O Diagrama em Blocos do 68.040 é mostrado na Figura 27.
Figura 27– Diagrama em Blocos do 68.040
Duas unidades de memória independentes se comunicam com a IU e a FPU. Cada unidade possui
uma MMU, unidade de gerenciamento de memória virtual, que translaciona endereço lógico para
físico. Instruções no interior da pastilha e cache de dados operam independentemente e são
acessadoa em paralelo com a translação de endereço. O cache aumenta o desempenho geral. Tanto
a IU como a FPU possuem pipeline e a IU executa concorrentemente com a FPU. O Controlador de
Barramento opera em modo Burst, de forma concorrente com todas as outras unidades funcionais. O
nível Write-Back de pipeline recebe sempre um resultado prévio da computação que poderá ou não
ser escrito em memória externa. Isto aumenta o desempenho, pois o acesso à memória externa é
sempre mais demorado que o acesso ao cache interno. Assim, o resultado da computação só é
escrito em memória externa, após confirmação do mesmo.
As principais características do 68.040 são:
•
•
•
•
•
•
•
•
•
•
•
Barramentos de Endereços (4 GBytes) e Dados de 32 bits não multiplexados;
Pipeline de 6 estágios (ver Unidade de Inteiros)
Compatibilidade em código com a família 68.000;
Suporte de Ponto Flutuante “on-chip” (diferentemente do 68.030);
Unidade de Gerenciamento de Memória “on-chip” (como no 68.030);
4 KB de cache de instruções e 4 KB de cache de dados;
Interface de Memória de Rajada (“Burst”);
Mecanismo de “Dynamic Bus Sizing”, o qual permite rodar código de 8, 16 e 32 bits;
44 MIPS a 40 MHz;
Disponível em 25, 33 e 40 MHz;
O 68040V é alimentado por 3,3 Volts.
Página 74
Microprocessadores
_________________________________________________________________________________________________
____
O Barramento do Macintosh
Neste ponto, vale comentar brevemente o barramento do principal concorrente do PC.
O padrão de barramento do Macintosh, por volta de 1989, era o NuBus, ou ANSI/IEEE 1196-1987,
concebido no MIT no fim dos anos 70, com forte apoio da Western Digital e da Texas Instruments. A
banda passante do NuBus era de 20 MBytes/s e, se utilizado em "modo bloco" podia chegar a
uma taxa de 37,6 MBps. Neste ponto, vale ressaltar as bandas passantes, na época, do PC XT, 1,0
MBps, e de um PC AT, 2 MBps. Naqueles anos, o único barramento comparável era o MCA 16 bits,
utilizado nos PS/2 da IBM, o qual possuía a mesma banda passante do NuBus.
Com este barramento os Macintosh aceitavam placas de 8, 16 e 32 bits. Já nos PCs/PSs, isto
variava segundo a máquina. O NuBus foi concebido para ser utilizado por qualquer microprocessador,
enquanto que o MCA aceitava somente microprocessadores da INTEL. A implicação disto era que
um Macintosh aceitava uma placa 386 da INTEL, podendo rodar DOS ou OS/2, o inverso não era
verdadeiro, isto é, não se podia, em princ¡pio, colocar uma placa da APPLE em um PS/2. O fato é
que os antigos barramentos dos XTs e ATs estão definitivamente obsoletos, pela sua banda
passante hoje considerada insuficiente.
Sobre o Sistema Operacional do Macintosh
Enquanto os PCs funcionavam sob controle do DOS e do controvertido OS/2, os Macintosh eram
controlados por um sistema operacional de propriedade da APPLE, que desde seu lançamento, em
1984, procurou não ser hermético e chegar de uma vez mais próximo do usuário final. Corre o boato
que o MS-Windows na sua versão inicial nada mais era do que uma cópia pior do sistema
operacional do Macintosh. Assim a APPLE, aproveitando os resultados dos trabalhos do PARC
("Palo Alto Research Center") da XEROX, apresentou um dos primeiros sistemas a adotar a
representação simbólica, sob a forma de "ícones" (pictograma que representa um documento, um
programa, uma função, etc) de arquivos. Este sistema era composto de um trio: a memória ROM da
máquina, os arquivos "System" e "Finder", aos quais vieram se somar cerca de 20 outros módulos
anexos.
A memória ROM teve pelo menos três versões e continha, além dos programas de interfaceamento
com o hardware, programas gráficos, caixa de ferramentas, etc. Os arquivos "System" e "Finder"
eram indissociáveis e complementares. Um Macintosh não era "bootável" se estes dois arquivos não
fosem encontrados no mesmo subdiretório.
As palavras-chave do sistema operacional do Macintosh são muitas: menus "pop-up" e "pull-down",
janelas, ícones, memória morta (ROM), memória viva (RAM), interface SCSI ("Small Computer
System Interface"), ToolBox (sub-programas em ROM), "copy", "paste", HFS ("Hierarchical File
System"), etc.
Juntamente com a versão 5.0 do sistema operacional, foi lançado o "MultiFinder", um "Finder"
multitarefa. O "MultiFinder" foi disponibilizado em 1987, anos antes do aparecimento dos primeiros
sistemas operacionais multitarefa para micros. A APPLE tem, assim, larga experiência com este
tipo de sistema.
Por volta de 1992, a Apple anunciou que o sistema operacional acompanhando os novos micros seria
o "System 7.1". O Sistema se tornaria "internacional", ou seja, com telas e menus em inglês,
espanhol, francês, japonês e português. Esta versão do software vinha embutida nos Macintosh.
Página 75
Microprocessadores
_________________________________________________________________________________________________
____
5.6 – O 68.060
As principais características do 68.060 são resumidas a seguir.
•
•
•
•
•
•
•
•
•
Compatibilidade total em código com o 68.040;
Implementação Superescalar da arquitetura do 68.000;
Execução de 3 instruções por período de relógio;
2 Caches de 8 KB “on-chip”;
Barramento de Dados e Endereços de 32 bits não multiplexados (como no 68.040);
Disponível em 50 e 66 MHz;
100 MIPS a 66 MHz;
68EC060 não possui FPU, nem MMUs;
68LC060 não possui FPU
O Diagrama em Blocos do 68.060 é mostrado na Figura 27.
Figura 28 – Diagrama em Blocos do 68.060
O mais importante nesta CPU é que a unidade de Inteiros, IU, contém um pipeline dual, uma
interface lógica para a FPU e controle lógico para a escrita de dados no cache e MMU. Isto implica
na execução de mais de uma instrução durante cada ciclo de clock.
Os seis estágios no pipeline de execução de inteiros são:
1.
2.
3.
4.
5.
6.
Decode – (DS) – A instrução é completamente decodificada;
Cálculo do Endereço Efetivo (AG) – Cálculo da locação do dado;
Busca do Endereço Efetivo (OC) – O dado é buscado da locação de memória;
Execução de Inteiros (EX) – O dado é manipulado durante a execução;
Disponibilidade de dados (DA) – O resultado está disponível;
Write-Back (WB) – O dado resultante é escrito no cache “on-chip” ou na memória externa.
Página 76
Microprocessadores
_________________________________________________________________________________________________
____
O Branch Cache na Unidade de Busca permite a deteção antecipada do salto, antes que a mudança
de fluxo afete a unidade inteira.
5.7 – OS POWERPC (IBM/APPLE/MOTOROLA)
5.7.1 - Origem
A idéia inicial das 3 gigantes da indústria era a de projetar um microprocessador de enorme
desempenho em um único chip. Isto permitiria um balanceamento entre máximo desempenho,
facilidade de fabricação e baixo custo. A raiz do projeto foi a arquitetura POWER da IBM.
Assim, os projetistas removeram instruções raramente utilizadas e minimizaram características que
restringiam o paralelismo. Também foram incluídas extensões para prover um suporte adicional à
funções freqüentemente utilizadas.
Instruções LOAD e STORE
Simplicidade na Implementação. Retirada de update “degenerado”. Uma instrução de LOAD que
tenta carregar um operando no mesmo registrador usado pelo endereço efetivo resultante é dita
degenerada (somente um valor deve ser carregado no registrador alvo). No PowerPC isto foi deixado
em aberto. Esta mudança não reduz a funcionalidade, mas simplifica a implementação.
Exceções de Ponto-Fixo
Diminuição do Período de Latência. Instruções de ponto-fixo ou ponto-flutuante atualizam um
registrador de condição baseado no tipo de resultado. Esta atualização pode aumentar o período de
latência. Mesmo sendo necessário, tal modo de funcionamento não é de uso freqüente. No PowerPC
foi acrescentada uma instrução SUBTRACT para completar o conjunto de instruções de ponto-fixo, a
qual não altera ou usa o bit de CARRY.
Computação de Ponto-Fixo
Remoção/Substituição de Instruções. Foram retiradas do conjunto, quatro instruções baseadas em
“Diferença ou Zero” e “Valor absoluto” por causa de seu uso não frequente e benefício limitado de
desempenho. Três outras instruções que envolviam três operandos fonte também foram removidas
por adicionarem complexidade à implementação. Tais instruções foram substituídas por três ou
quatro outras instruções.
Ponto-Flutuante
A arquitetura POWER provém um modelo computacional de ponto-flutuante que contém um conjunto
completo de instruções LOAD e STORE para operandos de ponto-flutuante de simples e dupla
precisão. Contudo, a computação de precisão simples é feita usando operações de precisão dupla,
em seguida arredondando o resultado para precisão simples. Foi adicionado ao PowerPC um
conjunto completo de operações aritméticas e de acumulação de precisão simples, de forma a
baixar o custo e aumentar a velocidade de operações de precisão simples, tornando mais lenta a
computação em precisão dupla. Em sistemas pequenos, isto aumenta o desempenho
significativamente, uma vez que gráficos, por exemplo, não necessitam de precisão dupla.
Modelo de Armazenamento
A arquitetura do POWER relegava a tarefa de manter a coerência do cache ao software e usava um
modelo de consistência fraco de armazenamento. O PowerPC também depende do software para
manter a consistência de armazenamento de instruções, mas adicionalmente permite ao software
Página 77
Microprocessadores
_________________________________________________________________________________________________
____
especificar quais páginas de armazenamento de dados o processador manterá em um estado
consistente.
Extensões de 64 bits
Os registradores acessíveis às instruções de ponto-fixo foram estendidos para 64 bits, com poucas
exceções. Um bit de Modo de ambiente foi adicionado ao registrador de status da máquina para
selecionar ambiente de 32 ou 64 bits. As especificações de 4 instruções existentes de LOAD de
ponto-fixo foram mudadas para implementações de 64 bits. Várias instruções aritméticas, de pontofixo e de ponto-flutuante foram adicionadas para manipular operações com e sem sinal em 64 bits.
5.7.2 – A Família PowerPC
A família PowerPC da Motorola possui vários membros, os quais possuem utilização específica. Os
microprocessadores usados em computadores handheld, notebooks, desktops, workstations e
servidores são:
•
•
•
•
PowerPC 601;
PowerPC 603;
PowerPC 604;
PowerPC 620;
Os utilizados embutidos em hardwares para rede, comunicações e microcontroladores são:
•
•
•
•
•
•
PowerPC 602;
PowerPC 603;
MPC821;
MPC823;
MPC860;
MPC505.
Como não podia deixar de ser, além dos microprocessadores, a Motorola também fabrica circuitos a
serem utilizados como periféricos desses microprocessadores, tais como: MPC105 (Controlador de
cache, ponte PCI e interface de DRAM num único chip).
A seguir serão fornecidas resumidamente as características de alguns deles.
PowerPC 620
O PowerPC 620 é uma implementação de 64 bits da arquitetura RISC do PowerPC com as seguintes
características:
•
•
•
Compatível em software com os 601, 603 e 604;
Capacidade de execução de 4 instruções por período de relógio;
6 unidades de execução independentes, incluindo:
•
•
•
•
•
2 unidades de Inteiros de Ciclo Único
Unidade de Inteiros Multiciclo
Unidade de Processamento de Saltos
Unidade Load/Store
Unidade de Ponto Flutuante
Página 78
Microprocessadores
_________________________________________________________________________________________________
____
•
•
•
•
•
•
•
32 Kbytes de cache de instruções e 32 Kbytes de cache de dados, fisicamente separados;
Suporte a Cache 128 bits L2 on-chip de 1 a 128 Mbytes;
MMU suporta 1 TeraBytes de memória física e 1 HeptaBytes de memória virtual;
Barramento de Dados de 128 bits;
Barramento de Endereços de 40 bits;
7 milhões de transistores integrados;
Tecnologia de Processo CMOS estático de 0,5 micron.
PowerPC 750/740
Os microprocessadores PowerPC 750/740 são implementações de 32 bits, de baixa potência, da
arquitetura RISC PowerPC. A única diferença entre os mesmos é a de que o 750 possui uma
interface de cache L2 dedicada “on-chip”.
As principais características do PowerPC 750 são;
•
•
•
Compatível em software e barramento com os 603e e 604e;
Capacidade de execução de 3 instruções por período de relógio;
6 unidades de execução independentes, incluindo:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
2 unidades de Inteiros
Unidade de Registradores de Sistema
Unidade de Processamento de Saltos
Unidade Load/Store
Unidade de Ponto Flutuante
Projeto de 1,9 a 2,5 Volts (interno) e 3,3 Volts (I/O) com 3 modos de salvamento de potência;
Cache L1 de 32 Kbytes para instruções e 32 Kbytes para dados, fisicamente separados;
Suporte a Cache L2 on-chip de até 1 MBytes (o PowerPC 740 não possui cache L2 “on-chip”);
MMU suporta 4 GigaBytes de memória física e 1 PetaBytes (2 52 bits) de memória virtual;
Barramento de Dados de 64 bits;
Barramento de Endereços de 32 bits;
6,5 milhões de transistores integrados;
Tecnologia de Processo CMOS estático de 0,25 ou 0,29 micron;
O PowerPC 750 opera nas velocidades de 200, 233, 266, 300, 333 e 366 MHz;
O PowerPC 740 opera nas velocidades de 200, 233, 266 e 300 MHz;
671 MIPS @ 366 MHz (750) e 550 MIPS @ 300 MHz (740).
Página 79
Microprocessadores
_________________________________________________________________________________________________
____
CAPÍTULO 6: INTRODUÇÃO AOS MICROCONTROLADORES
6.1 – ARQUITETURA INTERNA
Os microcontroladores são microprocessadores de propósito especial. Estas pastilhas contém todos
os circuitos periféricos necessários aos equipamentos normalmente utilizados na área de controle
processos. Os microprocessadores comuns são considerados de propósito geral. Como o nome
indica, são microprocessadores destinados a controlar.
A arquitetura interna dos mesmos, normalmente, é dotada de CPU, memória RAM, memória
EPROM, portas paralelas, portas seriais, temporizadores, contadores e lógica de expansão de
barramento.
A título de exemplo são detalhados dois microcontroladores. O primeiro é um antigo membro da
família de microcontroladores da INTEL, o 8052. Este é citado por razões históricas e práticas, pois
é de 8 bits e muitos equipamentos de hoje ainda são baseados nesta pastilha. O segundo é um
microcontrolador mais sofisticado, fabricado pela Motorola, o MPC860.
6.2 – O MICROCONTROLADOR 8052 DA INTEL
Como já mencionado, o 8052 faz parte de uma família de microcontroladores, conforme tabela a
seguir:
ROM Interna
RAM Interna
8051
4 KB
128
8031
128
8751
4 K (EPROM)
128
8052
8K
256
8032
256
83C512B
16 a 32 K
512
As características gerais, especificamente do 8052 incluem:
•
•
•
•
•
•
•
•
•
•
•
CPU de 8 bits;
Oscilador e Circuitos de Relógio Embutidos;
32 linhas de Entrada e Saída;
64 KB para endereços da memória de dados;
64 KB para endereços da memória de programa;
3 contadores/temporizadores de 16 bits;
5 fontes de interrupção (2 externas, 2 internas e 1 da porta serial);
Porta Serial Full-Duplex;
Processador Booleano;
4 modos de funcionamento para os 3 Temporizadores;
4 modos de funcionamento para a Porta Serial.
Página 80
Microprocessadores
_________________________________________________________________________________________________
____
O Diagrama em Blocos da Arquitetura do Microcontrolador 8052 da INTEL é mostrado na Figura 31.
ROM /
EPROM
(8 KBytes)
3 Contadores/
Temporizadores
(16 bits)
RAM
(256 Bytes)
CPU (8 bits)
8052
Controle de
Expansão de
Barramento
Entrada/Saída
Paralela
Programável
(32 Linhas)
Entrada/Saída
Serial
Programável
Figura 31 – Diagrama em Blocos do Microcontrolador 8052 da INTEL
Para dar uma idéia comparativa, em relação a microprocessadores de propósito geral, são listados
abaixo os Registradores Internos do 8052.
A – Acumulador
B – Reg. Utilizado em operações de multiplicação, divisão e rascunho
PSW – Reg. De Status (CY, ACY, OVF, PARITY, ...)
SP – Stack Pointer
DPTR – Endereço de 16 bits
P0, P1, P2 e P3 – Latches das Portas
SBUFF – Buffer para a Porta Serial
TH0, TL0, TH1, TL1, TH2, TL2 – Temporizadores de 16 bits
IP, IE, TMOD, TCON, SCON, PCON – Reg. de Controle
O acesso à memória externa é feito com o auxílio dos seguintes sinais: PSEN (“Programa Store
Enable”) para a memória de programa e RD (“Read”) e WR (“Write”) para a memória de dados mais
os endereços correspondentes.
Página 81
Microprocessadores
_________________________________________________________________________________________________
____
A Figura 32 mostra a organização de memória do 8052.
ROM Interna
(8 KBytes)
64
KBytes
RAM Externa
(Dados)
64
KBytes
RAM Externa
(Programas)
128
Bytes
RAM Interna
Registradores
Internos
Figura 32 – Organização de memória do 8052
As interrupções são:
•
INT 0 e INT 1 – Pinos da CPU projetados para receber pedidos externos de interrupção;
•
TF0 e TF1 – São geradas pelos Contadores/Temporizadores internos;
•
INT – Proveniente da Porta Serial interna.
6.3 – O MPC860 DA MOTOROLA
O MPC860 é uma combinação de microprocessador e periférico projetado para funcionar em uma
ampla variedade de aplicações de controlador, particularmente em produtos de comunicação e rede.
Página 82
Microprocessadores
_________________________________________________________________________________________________
____
Esta pastilha é a geração seguinte do MC68360 para aplicações de redes e comunicação de dados.
Esta pastilha integra 2 blocos de processamento: o primeiro é o núcleo do PowerPC e o segundo
é o Módulo Processador de Comunicação (CPM), muito similar ao MC68360. Esta arquitetura dual
provém um consumo mais baixo de potência do que o tradicional, por que o CPM assume as tarefas
de controle de periféricos do núcleo PowerPC.
As principais características do MPC860 são:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Núcleo PowerPC embutido com capacidade de 88 MIPS a 66 MHz;
4 KB de Cache de instruções;
4 KB de Cache de Dados;
32 bits de barramento de dados;
32 linhas de endereço;
MMUs de dados e instruções;
Controlador de Memória (8 bancos);
4 Temporizadores de 16 bits ou 2 de 32 bits;
Unidade de Integração de Sistema (SIU): Monitor de IRQ espúria, Sintetizador de Clock,
Decrementador PowerPC, controlador de RESET, ...;
7 IRQs externas, 16 IRQs internas e 12 pinos de porta com capacidade de interrupção;
Módulo Processador de Comunicações (CPM): 16 canais de DMA, 3 registradores paralelos de
I/O, até 5 KB de RAM de porta dual, controlador RISC, ...;
4 Geradores de Baud Rate (independentes);
4 Controladores de Comunicação Serial (SCC): Ethernet, HDLC/SDLC, UART, Apple Talk,
Infravermelho serial (IrDA);
2 Canais de Gerenciamento Serial (SMC);
1 interface periférica serial;
Interface paralela (porta Centronics ou mais rápida);
Interface PCMCIA (2 soquetes independentes);
Atribuidor de “Time Slot”, permitindo SCCs e SMCs rodarem em operação multiplexada e nãomultiplexada, suporta T1, ISDN,...;
Opera em 3,3 Volts e é compatível com TTL 5,0 Volts
Página 83
Microprocessadores
_________________________________________________________________________________________________
____
CAPÍTULO 7: AS ARQUITETURAS RISC
7.1 - NOÇÕES DE ARQUITETURA RISC
Todos os processadores mencionados até a seção anterior, em geral, são considerados como
máquinas CISC ("Complex Instruction Set Computer"). Guardadas as diferenças de projeto
arquitetônico entre INTEL e MOTOROLA, todas essas máquinas possuem um conjunto de
instruções, considerado por pesquisadores de arquitetura como, demasiado grande. Ainda que
estruturas pipeline possam ser encontradas no interior das máquinas CISC, isto não significa que
seu projeto tenha sido direcionado para a otimização da compilação de programas, como é bem o
caso das RISC.
As máquinas RISC ("Reduced Instruction Set Computer") apareceram no início dos anos 80 em
laboratórios de empresas (p.e. IBM), como o IBM 801, e em instituições de pesquisa: RISC I e RISC
II na Universidade da Califórnia - Berkeley e MIPS na Universidade de Stanford. Em 1985, todas as
três estavam operacionais.
Cada um dos projetos tinha diferentes requisitos e objetivos, mas alguns princípios eram comuns:
1.
2.
3.
4.
As operações eram registrador-para-registrador (e não memória-para-memória) com somente
instruções LOAD e STORE para acesso à memória;
Tanto operações (muitas delas completadas em um único ciclo) como modos de endereçamento
eram reduzidos (somente os modos Indexado e Relativo ao Contador de Programa);
O formato das instruções eram simples e não ultrapassavam o limite do tamanho de palavra;
O tratamento dado aos Saltos ou "JUMPS" RISC evitavam penalidades na estrutura pipeline.
O objetivo das máquinas RISC era o de aumentar a eficiência da interface entre o compilador e o
hardware e não, diminuir o "gap" entre o usuário e o hardware. Este último tem sido o objetivo das
máquinas consideradas CISC, como os microprocessadores de desktops e alguns servidores.
A compilação em processadores RISC é simples e o código gerado é eficiente, até mesmo em
função da própria filosofia de se ter um conjunto reduzido de instruções. Ao lado disso, com o avanço
tecnológico da integração VLSI ("Very Large Scale Integration"), também tornou-se possível realizar
o máximo de operações no interior do circuito integrado, aumentando sobremaneira a velocidade das
operações.
Pelo fato das instruções serem simples e pouco numerosas, várias transferências CPU/Memória e
vice-versa são necessárias. Este problema vem sendo resolvido com a técnica de "cache", ou seja,
ler um grupo de instruções de uma única vez, enfileirá-las e executá-las em seguida.
Um outro aspecto diz respeito aos numerosos registradores internos a processadores RISC. Pode-se
armazenar nesses registradores uma grande quantidade de dados temporários, no interior da
pastilha, sem que sejam necessários vários acessos à memória principal.
A técnica de "pipeline" em vários níveis também é utilizada para aumentar ainda mais a taxa de
execução de instruções.
Algumas máquinas RISC executam uma instrução por ciclo de relógio, isto para implementar um
pipeline eficiente. As máquinas clássicas utilizam vários ciclos de máquina, contendo vários ciclos
de relógio para a execução de uma única instrução.
Página 84
Microprocessadores
_________________________________________________________________________________________________
____
As instruções RISC, em geral, são de mesmo comprimento para aproveitar de maneira eficiente a
estrutura pipeline, uma vez que comprimentos diferentes levariam ao aumento do número de acessos
à memória para busca de instruções e, no caso de necessidade de uso de memória virtual, poderiam
haver quebras de páginas difíceis de serem gerenciadas.
7.2 - IMPLICAÇÕES NO DESEMPENHO DE UM COMPUTADOR
Pelas razões mencionadas na sessão anterior, processadores RISC possuem, no momento, um
desempenho superior ao de processadores CISC.
Pode-se dizer também que máquinas RISC foram construídas para diminuir o "gap de desempenho"
das máquinas e não o "gap semântico" entre o usuário e a máquina. Processadores CISC, ao
contrário, como qualquer um pode notar, diminuíram muito esse "gap semântico".
Um outro aspecto não menos importante foi o contra-senso, durante uma certa época, de se utilizar
máquinas RISC como equipamento central controlando vários terminais, pois certamente o projeto da
sua arquitetura não foi direcionado para tal e sua parte de Entrada/Saída muito menos. O que uma
máquina que usa um processador RISC como CPU faz é otimizar a ação de compiladores e
aumentar muito a velocidade de processamento, tornando-a adequada ao desenvolvedor de
aplicações "pesadas" ou aqueles que necessitam de recursos gráficos e de processamento,
considerados hoje, de primeira qualidade.
Com o aumento sistemático do desempenho de microprocessadores padrão da indústria, incluindo
características arquiteturais de máquinas RISC, a diferença conceitual entre uma e outra arquitetura
praticamente inexiste.
Página 85
Microprocessadores
_________________________________________________________________________________________________
____
CAPÍTULO 8: ARQUITETURAS NÃO CONVENCIONAIS
8.1 – ARQUITETURAS PARALELAS
A primeira pergunta a fazer é: O que é uma Arquitetura Paralela ?
“É uma coleção de elementos de processamento cooperantes para resolver problemas
grandes mais rapidamente”
A segunda pergunta seria: Qual a motivação para as pesquisas em Computação Paralela ?
1.
Aumento de Desempenho - Premissa do arquiteto de computadores: Projetar e construir os
vários níveis de um sistema de computador para maximizar o desempenho e programabilidade,
dentro dos limites de tecnologia e custo;
2.
Demanda de Usuários: Estruturas organizacionais inovadoras e diversas, frequentemente
chegam a necessidade de criação de novos modelos de programação;
3.
Demanda de Aplicações: física, química, biologia, CAD, Vídeo, gráficos, ..
4.
Tendências de Tecnologia: Crescimento de clock esperado é lento, número de transistores num
chip crescendo;
5.
Tendências de Arquitetura: Paralelismo no nível de instruções é limitado;
6.
Tendências de hoje: microprocessadores de hoje possuem suporte amultiprocessamento,
servidores e estações chegando ao multoprocessamento, microprocessadores de amanhão são
multiprocessadores;
7.
Tendências de Aplicações: variação do desempenho com o custo aumentando progressivamente
(figura 35). SPEEDUP = Desempenho (P processadores) / Desempenho (1 processador)
As figuras que se seguem procuram demonstrar as motivações para investimentos em arquiteturas
paralelas
Página 86
Microprocessadores
_________________________________________________________________________________________________
____
Demanda de Aplicações
Figura 33 – Evolução nas necessidades em computação científica
10 GIPS
1 GIPS
T elephone
Number
Recognition
100 MIPS
200 W ords
Isolated Speech
Recognition
10 MIPS
1 MIPS
Sub-Band
Speech Coding
1980
1985
1,000 W ords
Continuous
Speech
Recognition
ISDN-CD Stereo
Receiver
5,000 Words
Continuous
Speech
Recognition
HDTV Receiver
CIF Video
CELP
Speech Coding
Speaker
Veri¼ cation
1990
1995
Figura 34 – Evolução nas necessidades de processamernto de voz e imagem
Página 87
Microprocessadores
_________________________________________________________________________________________________
____
Página 88
Microprocessadores
_________________________________________________________________________________________________
____
Tendências de Tecnologia
100
Supercomputers
Mainframes
Microprocessors
Minicomputers
1
0.1
1965
1970
1975
1980
1985
1990
1995
Figura 35 – Crescimento do Desempenho de Computadores
1,000
Clock rate (MHz)
Performance
10
100
10
uu u
i8086 u
u
u
u
u
u
u
u
u
R10000
u
u
u
u
u
u
uuu
uu
uu
u
u
Pentium100
u
u
u
u
u
u
u
u
uuu
uu
uu
u
u
uu
uuu
u
uu u
u
u
u
uu
ui80386
i80286
u
u
1
i8080
uu
u i8008
i4004
0.1
1970
1975
1980
1985
1990
1995
2000
2005
Figura 36 – Taxa de Crescimento da Freqüência de Relógio
Página 89
Microprocessadores
_________________________________________________________________________________________________
____
100,000,000
u
Transistors
10,000,000
u
uu u
u
R10000
u
u
uu Pentium
uu
uu
uu
u
u
u
u
u
uu
u
uuu
u
u u
uu
u
u
u
u
u
i80386
i80286 u u
u u R3000
u
u
R2000
u
1,000,000
100,000
u i8086
10,000
u
u i8080
u
u i8008
i4004
1,000
1970
1980
1990
2000
1975
1985
1995
2005
Figura 37 – Taxa de Crescimento do Número de Transistores por Chip
Página 90
Microprocessadores
_________________________________________________________________________________________________
____
A figura 38 exibe uma classificação amplamente usada na literatura de arquitetura de computadores.
As arquiteturas são classificadas em SISD, SIMD, MISD e MIMD, sendo mais poderosa aquela que
implementa a execução de múltiplas instruções sobre múltiplos dados, a MIMD (“Multiple
Instructions Multiple Data”). A sigla das restantes são: SISD (“Single Instruction Single Data”), SIMD
(“Single Instruction Multiple Data”) e SIMD (“Single Instruction Multiple Data”).
Figura 38 – Classificação de Flynn
Na área de arquiteturas especificamente paralelas outras classificações podem ser encontradas.
Uma das quais estabelece 4 classes de Arquiteturas Paralelas:
1.
Arquiteturas Vetoriais
•
Processadores específicos (proprietários)
•
Memória centralizada
•
Espaço de endereçamento único (vários processadores endereçam a mesma memória)
•
Tempo de acesso uniforme (os processadores acessam qualquer parte da memória em
tempos iguais)
•
Componentes específicos
•
Tecnologia agressiva
•
Memória compartilhada
Página 91
Microprocessadores
_________________________________________________________________________________________________
____
2.
3.
4.
Arquiteturas SIMD
•
Processadores específicos (proprietários)
•
Memória distribuída
•
Espaço de endereçamento múltiplo (cada processador possui sua própria memória)
•
Tempo de acesso não uniforme (o tempo de acesso à memória por um processador pode
diferir, dependendo da localização da célula)
•
Componentes específicos ou disponíveis comercialmente
•
Tecnologia padrão
•
Memória distribuída
•
Passagem de Mensagens (através de uma rede de comunicação)
Arquiteturas MIMD com espaço de endereçamento único
•
Processadores comerciais (microprocessador)
•
Memória centralizada ou distribuída
•
Espaço de endereçamento único
•
Tempo de acesso uniforme ou não uniforme
•
Componentes disponíveis comercialmente (memória, lógica)
•
Tecnologia padrão
•
Memória compartilhada
Arquiteturas MIMD à Passagem de Mensagens
•
Processadores comerciais (microprocessador)
•
Memória distribuída
•
Espaço de endereçamento múltiplo
•
Tempo de acesso não uniforme
•
Componentes disponíveis comercialmente
•
Tecnologia padrão
•
Memória distribuída
•
Passagem de Mensagens (através de uma rede de comunicação)
Outro conceito importante são as fontes de paralelismo:
•
Paralelismo de Dados: há um reagrupamento de dados devendo seguir o mesmo
processamento;
•
Paralelismo de Controle: há a presença de partes independentes (tarefas, sequência de
operações) dentro de um programa;
•
Paralelismo de Fluxo: há um jogo de dados renovado constantemente durante a
execução.
Página 92
Microprocessadores
_________________________________________________________________________________________________
____
Resta perguntar: Quais os problemas a resolver numa arquitetura paralela ?
1.
Alocação de Recursos
•
•
•
2.
Acessos a Dados, Sincronização e Comunicação
•
•
•
3.
Quão grande é a coleção ?
Qual a potência dos seus elementos ?
Quanta memória utilizar ?
Como fazer os elementos cooperarem e se comunicarem ?
Quantos dados são transmitidos entre processadores ?
Quais são as abstrações e primitivas para a cooperação ?
Desempenho e escalabilidade
•
•
Quais as conseqüências no desempenho ?
Como graduar isto ?
A seção seguinte tratará especificamente de máquinas MIMD à Passagem de Mensagens,
simplesmente por que estas têm merecido a atenção de pesquisadores do mundo todo.
8.2 – MÁQUINAS MIMD À PASSAGEM DE MENSAGENS
No momento atual, ano 1999, verifica-se uma taxa de 50 a 100% de aumento de desempenho nos
microprocessadores a cada ano. A capacidade das RAMs dinâmicas quadruplica a cada 3 anos. A
densidade dos discos magnéticos cresce 50% anualmente. Isto força uma tendência de se utilizar
microprocessadores padrão. Além disso, o usuário força uma tendência de que a potência dos
sistemas de computador deve aumentar com o número de processadores, o que hoje não
corresponde a realidade.
Um outro aspecto é verificar os modelos utilizados pelos 500 computadores mais rápidos do mundo.
A figura 39 exibe a tendência de uso de máquinas à Passagem de Mensagens.
Página 93
Microprocessadores
_________________________________________________________________________________________________
____
350
Number of systems
300 n
313
239
u
250
200
u187
0s
11/93
u MPP
n PVP
s SMP
110
s
n
106
100
50
284
u
n 198
150
319
u
s
63
11/94
11/95
106
n
s
73
11/96
Figura 40 – Os 500 computadores mais rápidos do mundo
Pode-se classificar as Máquinas à Passagem de Mensagens em 2 classes, segundo o
gerenciamento de memória:
1.
2.
Multiprocessadores de Memória Compartilhada (espaço de endereçamento único)
Multicomputadores à Passagem de Mensagens (memória distribuída nos nós)
A figura 41 mostra as diferenças entre as classes.
Página 94
Microprocessadores
_________________________________________________________________________________________________
____
Modelo de Programação à Passagem de Mensagens
Mensagens
Processo
Processo
Processo
Processo
Dados
Dados
Dados
Dados
Dados Particionados (espaços de endereços privados)
Modelo de Programação com Memória Compartilhada
Operações de
Sincronização
Processo
Processo
Processo
Processo
Dados
Dados globalmente acessíveis
(espaço de endereço compartilhado)
Figura 41 – Dois Modelos de Arquiteturas Paralelas MIMD
Página 95
Microprocessadores
_________________________________________________________________________________________________
____
Página 96
Microprocessadores
_________________________________________________________________________________________________
____
Exemplo de Máquinas à Passagem de Mensagens
O IBM SP-2
Power 2
CPU
IBM SP-2 node
L2 $
Memory bus
4-way
interleaved
DRAM
Memory
controller
MicroChannel bus
NIC
I/O
DMA
i860
NI
DRAM
General interconnection
network formed fr
om
8-port switches
Página 97
Microprocessadores
_________________________________________________________________________________________________
____
Exemplo de Máquinas à Passagem de Mensagens
O INTEL PARAGON
i860
i860
L1 $
L1 $
Intel
Paragon
node
Memory bus (64-bit, 50 MHz)
Mem
ctrl
DMA
Driver
Sandia’ s Intel Paragon XP/S-based Supercomputer
2D grid network
with processing node
attached to every switch
NI
4-way
interleaved
DRAM
8 bits,
175 MHz,
bidirectional
Página 98
Microprocessadores
_________________________________________________________________________________________________
____
Kai Hwang definiu 3 gerações de máquinas MIMD à Passagem de Mensagens:
Primeira geração (1983-1987) – Tecnologia de placas de processadores utilizando redes hipercubo,
sendo a passagem de mensagens realizadapelo software. Um exemplo dessas máquinas é o
Cosmic Cube, desenvolvido pela Caltech por C. Seitz e o INTEL iPSC/1.
Segunda Geração (1988-1992) – Arquitetura com uma topologia de grade, sendo o roteamento
realizado por hardware. Um exemplo é o INTEL Paragon e iPSC/2.
Terceira Geração (1992-1997) – Tende a ser uma arquitetura de paralelismo sofisticado, podendo
serem citados a J-Machine, a Corporation Machine CM5 e o IBM SP/2.
O IBM SP-2 é uma tentativa de assegurar preferencialmente a transição a partir das estações de
trabalho até máquinas paralelas topo de linha, ao invés de visar diretamente o mercado topo de linha.
O Cosmic Cube
Entidade básica: o processo, que envia e recebe mensagens.
Operação: Cada nó pode conter vários processos que são executados concorrentemente, se
entrelaçando.
Arquitetura: 64 processadores 8086/8087 – 5 Mhz. Cada nó é ligado a 6 outros nós (6-cube) por
canais de comunicação bidirecionais, assíncronos e ponto-a-ponto. Nós possuem 128 KB de RAM e
8 KB de ROM (inicialização, boot, refrescamento de memória e programas de diagnóstico).
Sistema Operacional: Cada nó executa um micro-núcleo. Cada micro-núcleo pode criar e matar
processos sobre seu nó, gerenciar carga em memória e tratar interrupções. A cada processo está
associado um único e global ID (identificador) para endereçamento de mensagens. Cada mensagem
possue um cabeçalho contendo DESTINO, ID do EMISSOR, TIPO DE MENSAGEM e TAMANHO
DA MENSAGEM.
O INTEL Paragon
O Paragon oferece um alto nível de desempenho, flexibilidade e utilizabilidade em aplicações
destinadas a supercomputadores, acima dos tradicionais computadores vetoriais.
Arquitetura: Cada nó é um multiprocessador de memória compartilhada e usa no mínimo 2
processadores i860XP: um ou mais (processadores de aplicação) destinado a executar as
aplicações e um (processador de mensagens) dedicado à comunicação entre nós. Os nós são
distribuídos em uma rede 2D com ligações de 16 bits suportando até 175 Mbytes/s em cada direção.
Isto viabiliza uma largura de banda de até 5,6 Gbytes/s para um modelo XP/s com 76 nós. A
transferência de blocos de dados da memória para a interface de rede é feita através de dois canais
de DMA a uma velocidade de 400 Mbytes/s com um sistema de coerência de cache.
Sistema Operacional: Consiste de UNIX melhorado, totalmente distribuído ao longo dos nós,
eliminando a necessidade de se ter um host ou front-end.
Linguagens: Compiladores Fortran-77, C, C++ e Ada produzem código otimizado para aplicações
paralelas
O Paragon é o resultado de 10 anos de pesquisas e desenvolvimento começado na Caltech por C.
Seitz, depois no MIT por W. Dally e enfim pelo projeto Touchstone Intel-DARPA.
Página 99
Microprocessadores
_________________________________________________________________________________________________
____
A J-Machine
A J-Machine é um computador concorrente implementado segundo o modelo MIMD de memória
distribuída. Seu projeto começou no MIT em 1988 à partir das experiências de Dally na Caltech sobre
o processamento à base de passagem de mensagens. A idéia central é de que “processadores são
baratos e memória é cara”. Foi projetado para implementar todos os modelos de programação
(passagem de mensagens, memória compartilhada, dados paralelos, data-flow e atores).
Entidade básica: MDP (“Message-Driven Processor”). O MDP é um microcomputador VLSI de 36 bits
e 1,1 milhão de transistores, memória de 4096 palavras de 36 bits e uma porta de rede. Foi
concebido para ser eficiente dentro de um multiprocessador. Cada nó contém 4K do MDP mais 1
Mbytes de memória externa. O MDP possui ainda 6 portas de rede de duplo sentido e 1 porta de
diagnóstico. Cada porta de rede corresponde a uma direção (+x, -x, +y, -y, +z, -z) que faz o MDP se
corresponder com um MDP adjacente.
Cada nó pode injetar na rede 2 palavras de 72 bits por ciclo de relógio. Uma rede de 1024 nós
permite um largura de banda de 1,8 Gbytes/s.
Ambiente e Programação: Smaltalk concorrente e C dirigido à mensagens.
8.3 – TENDÊNCIAS EM ARQUITETURAS PARALELAS
Pode-se resumir as atuais tendências em arquiteturas paralelas nos seguintes pontos:
•
Redes de Estação de Trabalho
•
Redução do tempo de Desenvolvimento
•
Arquiteturas baseadas em Tecnologia Padrão
•
Suporte a todos os Modelos de Programação
Redes de Estação de Trabalho - Alguns autores comparam a evolução dos sistemas de
informática atuais à uma cadeia alimentar invertida, na qual “os pequenos comerão os grandes”. Os
PCs atacam o mercado de estações de trabalho que por sua vez consumiram o de
minicomputadores e avançam sobre o de mainframes e supercomputadores.
A relação Preço/desempenho das estações de trabalho aumenta 80% por ano e não aumenta mais
que 20 a 30% para os supercomputadores.
Nota-se também uma convergência entre as Redes de Estações de Trabalho e os Processadores
massivamente paralelos.
Redução do Tempo de Desenvolvimento – A estatística do tempo de desenvolvimento de
supercomputadores mostra que este é demasiadamente longo. A solução SP/2 da IBM parece
adaptar-se bem a esta deficiência. Os projetistas procuram fundar sua concepção em técnicas já
testadas e provadas, sendo descartada sistematicamente, toda inovação considerada complexa de
realizar.
Página 100
Microprocessadores
_________________________________________________________________________________________________
____
Arquiteturas baseadas em Tecnologia Padrão – Esta idéia é inicialmente fundamentada no fator
custo, mas também se baseia no aproveitamento rápido das últimas evoluções em
microprocessadores.
Suporte a todos os Modelos de Programação – Este é um requisito que tem se tornado
desejável, a fim de evitar a especialização das máquinas. Ou seja, a arquitetura deve possuir o
suporte necessário à execução de aplicações nos modelos de: passagem de mensagens, dados
paralelos, memória compartilhada, etc.
Página 101
Microprocessadores
_________________________________________________________________________________________________
____
BIBLIOGRAFIA
Livros:
1.
TANENBAUM, Andrew :"Structured Computer Organization", second edition, Prentice-Hall, Inc.,
1984.
2.
RUSSELL, Rector; ALEXY, George: "The 8086 Book", Ed. Osborne/ McGraw-Hill, 1981;
3.
ARTWICK, Bruce A., "Practical Hardware Details for 8080, 8085, Z80 e 6800 Microprocessors
Systems", Prentice-Hall, 1981;
4.
KANE, Gerry, "68000 Microprocessor Handbook", Osborne/McGraw-Hill, 1981;
5.
OSBORNE, Adam; KANE,
Osborne/McGraw-Hill, 1981;
6.
NORTON, Peter, "Desvendando o PC", Editora Campus Ltda., 1987;
7.
LEVENTHAL, Lance; WALSH, Colin;"Microcomputer Experimentation with the INTEL SDK-85",
Prentice-Hall, 1980;
Gerry;
"OSBORNE
16-bit
Microprocessor
Handbook",
Webgrafia
www.lri.fr
www.laas.fr
www.intel.com
http://www-techdoc.intel.com/
http://developer.intel.com/sites/developer/
http://www.cyrix.com/site_index.html
www.amd.com
http://www.tomshardware.com/
www.mot.com
http://www.mcu.motsps.com/index.html
http://www.lri.fr/~fci/goinfreWWW/projets97/fedak/Survey.html
http://ee.stanford.edu/
http://umunhum.stanford.edu/papers.html
Artigos:
1.
"Microprocessors - The First Twelve Years"; Proceedings IEEE, Vol. 71, No. 11, november 1983.
2.
"Microprocessors in Brief"; IBM Journal Research and Development, Vol. 29, No. 2, march 1985.
3.
"Optimizing Microprocessor Input/Output Techniques"; Computer Design, april 1981.
4.
"A Survey of Advanced Microprocessors and HLL Computer Architectures"; IEEE Computer,
august 1986.
Página 102
Microprocessadores
_________________________________________________________________________________________________
____
5.
"An Introduction to GaAs Microprocessor Architecture for VLSI"; IEEE Computer, march 1986.
6.
Artigos diversos das revistas: Byte USA, Byte Brasil, Electronic Design, Exame Informática,
Computer Design, PC Magazine USA, PC Magazine Brasil, PC World, SVM Macintosh.
7.
FEDAK, Gilles; “Les Machines MIMD à Passage de Messages”, Laboratoire de Recherche en
Informatique, 1996
Manuais:
1.
INTEL Corporation, "The MCS-85 Family User's Manual, january 1983;
2.
INTEL Corporation, "Application Techniques for the intel 8085 Bus", 1978;
3.
INTEL Corporation, "8080/8085 Assembly Language Programming Manual, 1978;
4.
INTEL Corporation, "Microsystem Components Handbook - Volume I, 1984;
5.
INTEL Corporation, "An Introduction to ASM 86", 1981;
6.
INTEL Corporation,"MCS-51 Family of Single Chip Microcomputers User's Manual, july, 1981;
7.
INTEL Corporation,"80386 High Performance Microprocessor
Management" - Advance Information, october 1985;
8.
INTEL Corporation,"iAPX 86/88, 186/188 User's Manual" - Programmer's Reference, may 1983;
9.
ZILOG, Inc., "Z80-CPU Technical Manual", 1977;
with
Integrated
Memory
10. ZILOG, Inc., "Z80-Assembly Language Programming Manual", 1977;
11. MOTOROLA Inc., "Motorola Microprocessors Data Manual", 1981;
Página 103