Escolar Documentos
Profissional Documentos
Cultura Documentos
Arquitetura de
processadores
Mostraremos neste captulo alguns conceitos importantes sobre o
funcionamento interno dos processadores. Tomaremos como exemplo os
processadores Intel, e com eles voc entender conceitos como execuo
especulativa, pipeline, previso de desvio, paralelismo, micro-operaes,
linguagem assembly, memria virtual, paginao e outros termos complexos.
O assunto difcil, mas vale a pena, pois o leitor passar a ter um
conhecimento mais profundo sobre o que se passa dentro de um
processador.
Processadores
Processadores
Processadores
Processadores
8-2
Hardware Total
Por exemplo, a instruo que acabamos de citar, que soma o valor dos
registradores AX e BX e guarda o resultado em AX, representada por:
ADD AX,BX
Esta instruo representada na memria pelo seguinte cdigo de mquina:
01 D8
Portanto a instruo ADD AX,BX representada na memria por dois
bytes, com valores 01 e D8 (em hexadecimal). Os bytes na memria que
formam os programas so o que chamamos de linguagem de mquina. Esse
cdigos so lidos e executados pelo processador. J as representaes por
siglas, como ADD AX,BX, formam o que chamamos de linguagem
assembly. Quando programamos em linguagem assembly, estamos utilizando
8-3
Cdigo
------------01D8
C3
16
B03A
380685D5
750E
804E0402
BF86D5
C6460000
E85F0B
8B7E34
007C1B
Assembly
-----------------------------ADD
AX,BX
RET
PUSH
SS
MOV
AL,3A
CMP
[D585],AL
JNZ
011A
OR
BYTE PTR [BP+04],02
MOV
DI,D586
MOV
BYTE PTR [BP+00],00
CALL
0C79
MOV
DI,[BP+34]
ADD
[SI+1B],BH
8-4
Hardware Total
8-5
Nome
Zero
Carry
Parity
Signal
Aux. Carry
Descrio
Indica se o resultado da operao foi zero
Indica se uma operao aritmtica teve vai um ou pede emprestado
Indica a paridade do resultado da operao.
Indica o sinal de uma operao, se foi positivo ou negativo
Carry auxiliar, em algumas instrues especiais.
8-6
Hardware Total
; A=C
; C=E
; D=M, ou seja, a posio de memria indicada
; por HL
; M=A
8-7
8-8
Hardware Total
LHLD 1000h
SHLD 2000h
; A = [DE]
; [BC] = A
; A = [BC]
; [DE] = A
Note que estamos usando as notaes [BC] e [DE] para indicar as posies
de memria cujos endereos so dados por BC e DE. Observe que as
instrues LDAX H e STAX H no existem, mas em seu lugar temos MOV
A,M e MOV M,A que fazem a mesma coisa.
8-9
; DE HL
MVI A,100
MOV C,A
LXI H, 300h
MVI M,40
LXI D, 1000h
MOV A,M
STAX D
SHLD 2000h
XCHG
; Troca os valores de DE e HL
; A = A+B
; A = A=C
; A = A+L
; A = A+[HL]
Assim como ocorre com todas as instrues aritmticas e lgicas, os flags (Z,
CY, P, S e AC) so atualizados de acordo com o resultado da operao. Por
exemplo, se somarmos C8h com 72h, o resultado ser 13Ah. Este valor no
cabe em 8 bits, portanto o resultado ser 3Ah e o bit Carry ser ligado para
indicar que ocorreu um vai 1.
8-10
Hardware Total
; A = A+90
; A = A+35
; A = A+L+carry
; A = A+D+carry
; A = A+[HL]+carry
; A = A+90+carry
; A = A+84+carry
; A = A-D
; A = A-C
; A = A-[HL]
; A = A-20
; A = A-82
; A = A-DF (hex)
SBB: Similar instruo SUB, exceto que leva em conta o valor do carry.
Serve para fazer clculos com o mtodo de pedir emprestado. Exemplos:
SBB C
SBB L
SBB M
; A = A-C-carry
; A = A-L-carry
; A = A-[HL]-carry
8-11
SBI: Similar instruo SUI, exceto que leva em conta o valor do carry.
Serve para fazer clculos com o mtodo de pedir emprestado. Exemplos:
SBI 2Fh
SBI 73h
; A = A-2Fh-carry
; A = A-73h-carry
; A = A+1
; C = C+1
; D = D+1
; L = L+1
; [HL] = [HL]+1
; A = A-1
; C = C-1
; D = D-1
; H = H-1
; [HL] = [HL]-1
8-12
Hardware Total
INX H
INX D
DCX B
INX SP
; HL = HL+1
; DE = DE+1
; BC = BC-1
; SP = SP+1
; HL = HL+BC
; HL = HL+DE
; HL = HL+HL
;HL = HL+SP
TRAN:
LXI H, 1000h
LXI D, 2000h
MVI C, 30
MOV A,M
STAD X
INX H
INX D
DCR C
JNZ TRAN
8-13
NOT X
1
0
X
0
0
1
1
Y
0
1
0
1
X AND Y
0
0
0
1
X
0
0
1
1
Y
0
1
0
1
X OR Y
0
1
1
1
Como vemos na tabela acima, o operador NOT faz a inverso do bit sobre o
qual atua. O operador AND dar resultado 1 apenas quando ambos os bits
forem 1, e dar 0 em caso contrrio. O operador OR dar resultado 0
somente quando ambos os bits forem 0. O operador XOR dar resultado 1
se os dois bits forem diferentes, e 0 se ambos os bits forem iguais.
X
0
0
1
1
Y
0
1
0
1
X XOR Y
0
1
1
0
Essas operaes so envolvem apenas um bit, mas nas instrues lgicas dos
processadores, atuam individualmente sobre cada um dos bits. Por exemplo,
se calcularmos 10111110 AND 10010101, teremos o seguinte resultado:
10111110
10010101 AND
-----------10010100
8-14
Hardware Total
Note que o primeiro bit do resultado obtido fazendo a operao AND com
os primeiros bits das duas parcelas, e assim por diante.
ANA e ANI: Realiza uma operao AND, bit a bit, do acumulador com o
registrador especificado. O resultado da operao fica no acumulador. A
instruo ANI faz o AND do acumulador com um valor constante.
ANA B
ANA C
ANA A
ANA M
ANI 3Fh
; A = A AND B
; A = A AND C
; A = A AND A
; A = A AND [HL]
; A = A AND 3F
bit6
bit5
bit4
bit3
bit2
bit1
bit0
; A = A XOR B
; A = A XOR C
; A = A XOR L
; A = A OR 20h
; A = A XOR 04h
; A = A XOR A
8-15
Z=0
Z=1
Z=0
Cy=0
Cy=0
Cy=1
Exemplos:
CMP C
CMP L
CMP M
CPI 4Ch
; Compara A com C
; Compara A com L
; Compara A com [HL]
; Compara A com 4C
8-16
Hardware Total
8-17
21
11
0E
CD
C3
00
00
10
20
00
81
82
10
00
7E
12
23
13
0D
C2 20 10
C9
LXI H, 8100
LXI D, 8200
MVI C,10
CALL 1020
JMP 0
MOV A,M
STAX D
INX H
INX D
DCR C
JNZ 1020
RET
8-18
Hardware Total
Ao
Pula se Zero est ligado
JNZ
JC
JNC
JPE
JPO
JP
JM
Interpretao
Pula se o resultado zero,
Pula se iguais
Pula se o resultado no zero,
Pula se diferentes
Pula se menor, pula se carry
Pula se maior ou igual, pula se no carry
Pula se nmero de bits 1 par
Pula se nmero de bits 1 mpar
Pula se resultado positivo ou zero
Pula se resultado negativo
8-19
8-20
Hardware Total
8-21
Isto pode ser necessrio, por exemplo, para fazer o processador esperar um
pouco mais pela execuo das funes de certos circuitos lentos.
Um pequeno programa para 8080
LECH:
FIM:
LXI H, 1000h
MVI C,0
CALL INCHAR
CPI 0Dh
JZ FIM
MOV B,A
MOV A,C
CPI 80
JZ LECH
MOV A,B
MOV M,A
CALL OUTCHAR
INR C
INX H
JMP LECH
JMP 0
INCHAR:
IN 81h
ANI 01
JZ INCHAR
IN 80h
RET
OUTCHAR:
PUSH B
MOV B,A
IN 81h
ANI 02
JZ OUTC1
MOV A,B
OUT 80h
POP B
RET
OUTC1:
8-22
Hardware Total
Op
Cod
e
00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
20
21
22
23
24
25
26
27
Mnemonic
Op
Code Mnemonic
NOP
LXI B,D16
STAX B
INX B
INR B
DCR B
MVI B,D8
RLC
DAD B
LDAX B
DCX B
INR C
DCR C
MVI C,D8
RRC
LXI D,D16
STAX D
INX D
INR D
DCR D
MVI D,D8
RAL
DAD D
LDAX D
DCX D
INR E
DCR E
MVI E,D8
RAR
LXI H,D16
SHLD ADDR
INX H
INR H
DCR H
MVI H,D8
DAA
2B
2C
2D
2E
2F
30
31
32
33
34
35
36
37
38
39
3A
3B
3C
3D
3E
3F
40
41
42
43
44
45
46
47
48
49
4A
4B
4C
4D
4E
4F
50
51
52
DCX H
INR L
DCR L
MVI L,D8
CMA
LXI SP,d16
STA ADDR
INX SP
INR M
DCR M
MVI M,D8
STC
DAD SP
LDA ADDR
DCX SP
INR A
DCR A
MVI A,D8
CMC
MOV B,B
MOV B,C
MOV B,D
MOV B,E
MOV B,H
MOV B,L
MOV B,M
MOV B,A
MOV C,B
MOV C,C
MOV C,D
MOV C,E
MOV C,H
MOV C,L
MOV C,M
MOV C,A
MOV D,B
MOV D,C
MOV D,D
Op
Cod
e
56
57
58
59
5A
5B
5C
5D
5E
5F
60
61
62
63
64
65
66
67
68
69
6A
6B
6C
6D
6E
6F
70
71
72
73
74
75
76
77
78
79
7A
7B
7C
7D
Mnemonic
MOV D,M
MOV D,A
MOV E,B
MOV E,C
MOV E,D
MOV E,E
MOV E,H
MOV E,L
MOV E,M
MOV E,A
MOV H,B
MOV H,C
MOV H,D
MOV H,E
MOV H,H
MOV H,L
MOV H,M
MOV H,A
MOV L,B
MOV L,C
MOV L,D
MOV L,E
MOV L,H
MOV L,L
MOV L,M
MOV L,A
MOV M,B
MOV M,C
MOV M,D
MOV M,E
MOV M,H
MOV M,L
HLT
MOV M,A
MOV A,B
MOV A,C
MOV A,D
MOV A,E
MOV A,H
MOV A,L
Op
Cod
e
81
82
83
84
85
86
87
88
89
8A
8B
8C
8D
8E
8F
90
91
92
93
94
95
96
97
98
99
9A
9B
9C
9D
9E
9F
A0
A1
A2
A3
A4
A5
A6
A7
A8
Mnemonic
Op
Code
Mnemonic
Op
Code
Mnemonic
ADD C
ADD D
ADD E
ADD H
ADD L
ADD M
ADD A
ADC B
ADC C
ADC D
ADC E
ADC H
ADC L
ADC M
ADC A
SUB B
SUB C
SUB D
SUB E
SUB H
SUB L
SUB M
SUB A
SBB B
SBB C
SBB D
SBB E
SBB H
SBB L
SBB M
SBB A
ANA B
ANA C
ANA D
ANA E
ANA H
ANA L
ANA M
ANA A
XRA B
AC
AD
AE
AF
B0
B1
B2
B3
B4
B5
B6
B7
B8
B9
BA
BB
BC
BD
BE
BF
C0
C1
C2
C3
C4
C5
C6
C7
C8
C9
CA
CB
CC
CD
CE
CF
D0
D1
D2
D3
XRA H
XRA L
XRA M
XRA A
ORA B
ORA C
ORA D
ORA E
ORA H
ORA L
ORA M
ORA A
CMP B
CMP C
CMP D
CMP E
CMP H
CMP L
CMP M
CMP A
RNZ
POP B
JNZ ADDR
JMP ADDR
CNZ ADDR
PUSH B
ADI D8
RST 0
RZ
RET
JZ ADDR
CZ ADDR
CALL Addr
ACI D8
RST 1
RNC
POP D
JNC ADDR
OUT D8
D7
D8
D9
DA
DB
DC
DD
DE
DF
E0
E1
E2
E3
E4
E5
E6
E7
E8
E9
EA
EB
EC
ED
EE
EF
F0
F1
F2
F3
F4
F5
F6
F7
F8
F9
FA
FB
FC
FD
FE
RST 2
RC
JC ADDR
IN D8
CC ADDR
SBI D8
RST 3
POR
POP H
JPO ADDR
XTHL
CPO ADDR
PUSH H
ANI D8
RST 4
RPE
PCHL
JPE ADDR
XCHG
CPE ADDR
XRI D8
RST 5
RP
POP PSW
JP ADDR
DI
CP ADDR
PUSH PSW
ORI D8
RST 6
RM
SPHL
JM ADDR
EI
CM ADDR
CPI D8
DAD H
LHLD ADDR
53
54
55
MOV D,E
MOV D,H
MOV D,L
7E
7F
80
MOV A,M
MOV A,A
ADD B
8-23
A9
AA
AB
XRA C
XRA D
XRA E
D4
D5
D6
CNC ADDR FF
PUSH D
SUI D8
RST 7
8-24
Hardware Total
Figura 8.7
Registradores
8086.
internos
do
8-25
[BX+SI+valor]
[BX+DI+valor]
[BP+SI+valor]
[BP+DI+valor]
Exemplos:
MOV BX,1000h
MOV AL,[BX+15h]
MOV BX,2000h
MOV SI,100h
MOV AL,[BX+SI+20h]
8-26
Hardware Total
8-27
Figura 8.9
Determinao de um endereo absoluto a
partir do segmento e do offset.
8-28
Hardware Total
; Carrega AX com 0
; Carrega BX com 1000h
; Carrega DL com 20h
; Carrega SI com 3500h
; Copia BX em AX
; Copia SI em CX
; Copia AX em DS
; Faz um OR de BX com CX. Resultado fica em BX
8-29
MOV DX,[BP+SI]
MOV AH,[BP+SI+2000]
MOV AL,[BP+DI]
MOV DX,[BP+DI+700]
MOV: Move dados entre dois locais quaisquer. Podem ser usados nesta
instruo, qualquer um dos modos de endereamento j citados. Exemplos:
MOV AX,BX
MOV DI,1000h
MOV [BX+SI],20
MOV CL,19
MOV SI,[BX]
MOV [BP+DI],CX
8-30
Hardware Total
Instrues aritmticas
Estamos apresentando agora os prefixos byte ptr e word ptr. Esses prefixos
so utilizados para informar ao assembler a real inteno do programador, se
acessar um dado de 8 ou de 16 bits. Por exemplo, na instruo MOV AL,
[BX], o assembler sabe que o valor da memria a ser acessado de 8 bits, j
que o outro operando AL, que tambm de 8 bits. J em instrues como
NEG [BX], o assembler no saberia se a operao deve ser feita sobre o byte
cujo endereo dado por BX, ou se deve operar sobre os dois bytes (word)
com este endereo. Usamos ento os prefixos byte ptr e word ptr quando
necessrio para dar esta informao ao assembler.
ADD, ADC: Soma os dois operandos. O resultado colocado no primeiro
operando. A operao pode ser feita com 8 ou 16 bits, dependendo do
operando. A instruo ADC soma os dois valores com o bit Carry, o que
usado para fazer o vai 1, agrupando dados de 16 bits para formar dados
com maior nmero de bits. Exemplos:
ADD BX,SI
ADD AX,[BX+DI]
ADD CL,AH
ADD DX,CX
ADD [SI],DX
ADC CX,[BX+SI]
ADC AH,[BP+SI+3]
ADC DX,BX
ADC [SI],AX
8-31
8-32
Hardware Total
apenas com nmeros inteiros positivos, e a IDIV opera tanto com positivos
quanto com negativos.
INC, DEC: Incrementa de uma unidade e decrementa de uma unidade. Os
bits Carry e Zero so afetados por essas operaes, portanto podem ser
usadas para implementar contadores. Por exemplo, para preencher a tela de
um terminal de vdeo com 2000 caracteres em branco, podemos usar o
seguinte trecho de programa:
ENVIA:
MOV DX,2000
MOV AL, 20h
CALL OUTCHAR
DEC DX
JNZ ENVIA
8-33
Shifts e Rotates
O 8086 tem diversas instrues para deslocar bits para a esquerda e para a
direita. So chamadas de shifts e rotates. As instrues SHL e SHR so
exemplos de shifts. Provocam o deslocamento de todos os bits para a
esquerda e para a direita, respectivamente. Bits 0 so introduzidos direita e
esquerda. A operao dessas duas instrues mostrada na figura 10. Note
que no 8086, qualquer registrador ou posio de memria pode ser usada
com esta instruo. Podemos aplicar um deslocamento de um s bit ou de
mltiplos bits, como mostraremos mais adiante.
Figura 8.10
Instrues SHL e SHR.
8-34
Hardware Total
As instrues RCL e RCR operam de forma similar, exceto pelo fato do bit
Carry fazer parte da rotao, ao invs de simplesmente ficar com uma cpia
do bit realimentado. A figura 12 mostra o funcionamento dessas duas
instrues, que so exemplos de rotates. Este o mesmo mtodo de rotao
usado pelas instrues RAL e RAR do 8080.
Figura 8.12
Instrues RCL e RCR.
8-35
Desvios
8-36
Hardware Total
TRANSF:
MOV CX,10
MOV SI,1000
MOV DI,2000
MOV AL,[SI]
MOV [DI],AL
INC SI
INC DI
LOOP TRANSF
8-37
teste no bit Zero, e executao uma instruo LOOP caso a condio seja
satisfeita. Se a condio no for satisfeita, o loop ser terminado. Podemos
usar os loops condicionais para fazer uma comparao ou finalizar uma
contagem antes imediatamente antes do final do loop, permitindo assim que
o loop possa ser finalizado mesmo que o contador no tenha chegado a zero.
Existe ainda a instruo JCXZ (jump if CX=0). Como o nome j diz, esta
instruo executa um desvio caso o valor de CX tenha atingido o valor zero.
Note que esta instruo, a instruo LOOP e suas formas condicionais, e as
instrues de shifts e rotates que podem usar em CL o nmero de bits a
serem deslocados, do ao registrador CX uma espcie de personalidade.
Este registrador usado como contador em todas essas instrues citadas, e
em outras que ainda vamos apresentar.
Rotinas e retornos
8-38
Hardware Total
Interrupes e E/S
Manipulao de strings
8-39
Observe que o prefixo REP faz com a que a instruo seguinte seja
executada CX vezes, mas este prefixo s pode ser usado em operaes com
strings.
Outras operaes com strings so:
LODSB e LODSW: Carrega em AL ou AX o dado apontado por DS:SI. O
registrador SI incrementado de 1 ou 2 unidades dependendo de ser a
operao de 8 ou 16 bits.
STOSB e STOSW: Armazena AL ou AX em ES:DI. O registrador DI
incrementado de 1 ou 2 unidades para operaes de 8 ou 16 bits,
respectivamente. Aliado ao prefixo REP, essas instrues permitem
preencher uma rea de memria com um valor constante.
8-40
Hardware Total
O 8086 tem muitas outras instrues. Optamos por no apresentar todas aqui
para no tornar o captulo muito complexo. Voc pode obter no site da Intel
(www.intel.com), o manual completo da linguagem assembly dos
processadores modernos. A diferena que existem novas instrues,
sobretudo aquelas para manipular valores de 32 bits. Mesmo no sendo
totalmente completa, esta apresentao resumida atendeu ao nosso objetivo
de mostrar como o processador opera internamente e como os programas
so executados.
Arquitetura do 80286
O 80286 tambm um processador de 16 bits. Possui os mesmos
registradores internos existentes no 8086. Entretanto possui algumas novas
instrues, bem como um novo modo de endereamento capaz de operar
com 16 MB de memria, o que era uma quantidade espantosa para a poca
do seu lanamento (1982), quando a maioria dos computadores tinha 64 kB
de memria. O 80286 podia operar em duas modalidades. O chamado
modo real (8086 real address mode) permite enderear at 1 MB de
memria. Nesse caso o processador comporta-se como um 8086, apenas
acrescido de algumas novas instrues. Para uso em sistemas operacionais
mais avanados, o 80286 podia operar no modo protegido (protected virtual
address mode). Neste modo, o processador pode operar com 16 MB de
memria fsica e at 1 GB de memria virtual por tarefa.
Multitarefa
8-41
ocorre uma diviso do tempo entre os vrios processos que esto sendo
executados. Uma forma simples de dividir o tempo alocar perodos iguais
(10 milsismos de segundo, por exemplo), e distrubuir esses perodos entre
os processos. Quando um processo comea a ser executado, ser
interrompido 10 ms depois, e o sistema operacional deve fazer com que o
processador d ateno ao processo seguinte. Desta forma usando um
esquema de rodzio, todos os processos so executados ao mesmo tempo,
porm em cada instante um s est efetivamente em execuo, e os demais
esto aguardando. O perodo no qual o processador est dedicado a um
processo chamado time slice.
Existem outros esquemas mais sofisticados para implementar a multitarefa.
Processos podem ter prioridades diferentes e time slices diferentes, visando
aumentar a eficincia. Um processo que faz muitas operaes de E/S tende a
no utilizar integralmente seu time slice, j que freqentemente precisa parar
e aguardar pela operao de E/S (a leitura de um arquivo do disco, por
exemplo). Este tipo de processo classificado como I/O bounded. Por
outro lado, processos que fazem poucas operaes de E/S e realizam muito
processamento so chamados de CPU bounded. Esses processos tendem a
utilizar integralmente o seu time slice. Visando aumentar a eficinica, o
sistema operacional pode reduzir o time slice e aumentar a prioridade para
os processos I/O bounded. Pode ainda aumentar o time slice e reduzir a
prioridade para os processos CPU bounded. Enfim, o sistema operacional
pode alterar as prioridades e a durao do time slice para que o trabalho do
processador seja distribudo uniformemente entre os vrios processos.
Novas instrues do 80286
8-42
Hardware Total
Shifts e Rotates: No 8086 essas operaes eram feitas com 1 bit ou com
mltiplos bits, mas era preciso carregar em CL o nmero de bits a serem
deslocados. No 80286 o valor pode ser usado diretamente na instruo. Por
exemplo: SHR AX,3
INSB, INSW, OUTSB, OUTSW: So verses mais avanadas das
instrues IN e OUT. Agora essas instrues operam com strings. Portanto
possvel, por exemplo, enviar para um endereo de E/S uma seqncia de
dados da memria. O prefixo REP e o contador CX podem ser usados para
especificar o nmero de transferncias a serem realizadas.
ENTER e LEAVE: Essas novas instrues so usadas para implementar
rotinas em linguagens de alto nvel. A instruo ENTER cria o que
chamamos de stack frame, no qual ficam armazenados parmetros e
variveis locais da rotina. A instruo LEAVE realiza o proceso inverso.
Essas duas novas instrues tornaram o uso de rotinas em assembly mais
adequado ao mtodo usado pelas linguagens de alto nvel, alm de permitir
uma entrada e sada mais rpida das rotinas.
BOUND: Essa instruo checa se o ndice de um array est entre os limites
mximo e mnimo permitidos pelo array. O array nada mais que um vetor
na memria. Por exemplo, se temos um array A com ndices de 0 a 10, seus
elementos so A[0], A[1], A[2], .... , A[10]. Se tentarmos usar uma expresso
como A[30], um programa em linguagem de alto nvel dever ser suspenso
com a apresentao da mensagem de erro Invalid index. Certas linguagens
no testam ndices invlidos e cabe ao programador garantir que o ndice
vlido. Outras linguagens monitoram os ndices durante a execuo, mas isto
resulta em mais tempo gasto. A instruo BOUND permite fazer a checagem
dos ndices em tempo de execuo, de forma mais rpida.
Instrues para o modo virtual: O 80286 possui vrias instrues que
servem para que o sistema operacional faa o gerenciamento da memria e
das tarefas quando opera em modo protegido.
Modo real
8-43
isso o que acontece, mas devemos lembrar que o 8086, 8088 e 80286 so
processadores, e o XT um computador. Seria correto dizer que no modo
real, o 80286 opera como um 8086 acrescido de instrues novas como
BOUND, ENTER, LEAVE, INSB, INSW, OUTSB, OUTSW, novos shifts,
rotates e a nova instruo IMUL, alm das instrues PUSHA e POPA.
Entretanto muitos programadores optavam por no utilizar essas novas
instrues, para que seus programas fossem compatveis com o IBM XT.
Alguns programas tinham verses para XT e verses otimizadas para 80286,
que usavam essas novas instrues. Apenas no final dos anos 80, quando o
AT-286 era mais comum que o XT, surgiram programas que rodavam
somente no 286, utilizando essas novas instrues.
Modo protegido
8-44
Hardware Total
Apesar do 286 ter sido lanado em 1982 e bastante avanado para a sua
poca, quase sempre este processador era usado no modo real. Este
processador comeou a ser desenvolvido no final dos anos 70, e at o seu
lanamento, ocorreu uma verdadeira reviravolta na indstria de
microcomputadores:
a) Transio entre os micros de 8 e de 16 bits
b) Lanamento do IBM PC
c) Lanamento do MS-DOS
d) Consolidao do IBM PC e do MS-DOS no mercado de micros
O modo real bastante limitado. Lembra muito a operao dos
processadores de 8 bits. J o modo protegido tem caractersticas de
computadores mais poderosos. Recursos antes encontrados apenas em
computadores de grande porte passariam a fazer parte dos
microcomputadores. Era tido como bvia a criao de novos sistemas
operacionais mais avanados, operando em modo protegido. Tudo indicava
que esses novos sistemas operacionais tomariam o lugar do arcaico DOS de
modo real, que no passava de uma herana do sistema operacional CPM,
usado nos micros de 8 bits desde os anos 70. Seriam criados sistemas mais
poderosos, e o 80286 era um processador com recursos avanados para
atender a esses novos sistemas.
No foi bem isso o que ocorreu. O IBM PC passou a ser cada vez mais
usado, at chegar ao ponto em que microcomputador passou a ser sinnimo
de IBM PC. O nmero de PCs aumentou ainda mais depois que surgiram os
clones, ou seja, PCs similares produzidos por outros fabricantes. Ao lado do
PC, o sistema operacional MS-DOS com toda a sua limitao tornou-se mais
utilizado que todos os demais sistemas operacionais.
Quem poderia imagiar, durante o projeto do 286, que o arcaico MS-DOS
faria tanto sucesso durante tantos anos? Por isso o 286 no foi projetado sob
medida para o MS-DOS, e sim para sistemas mais avanados. Apesar de um
PC equipado com um 286 de 6 MHz ser quase 6 vezes mais veloz que um
XT, o MS-DOS no podia fazer uso dos 16 MB (memria estendida) de
memria que o 286 era capaz de enderear. O 286 s oferece 16 MB no
modo protegido, e o MS-DOS s opera no modo real.
8-45
Arquitetura do 80386
muito importante conhecer bem o 386, pois todos os processadores
posteriores, do 486 ao Pentium 4, utilizam mtodos semelhantes de
gerenciamento de memria e multitarefa, bem como possuem conjuntos de
instrues similares, com apenas algumas poucas diferenas.
A figura 14 mostra o diagrama interno do 386. Alm de vrios elementos
encontrados em outros processadores, destacam-se as unidades de
8-46
Hardware Total
Os registradores AX, BX, CX, DX, SI, DI, BP e SP foram todos expandidos
para 32 bits. Os registradores de segmento CS, SS, DS e ES tambm esto
presentes e so de 16 bits. Foram adicionados mais dois registradores para
apontar para segmentos de dados: FS e GS. O contador de instrues (IP),
8-47
que antes tinha 16 bits, agora tem 32 bits, e novos flags resultaram no
aumento do registrador de flags tambm para 32 bits.
Novas instrues do 80386
Somente pelo fato dos registradores serem agora de 32 bits, o 80386 ganhou
vrias novas instrues. Todas as instrues que operavam com 8 e 16 bits,
agora operam tambm com 32 bits. Por exemplo, podemos manter nmeros
de 32 bits nos registradores EAX e EBX e usar a instruo ADD EAX,EBX,
obtendo um resultado de 32 bits. No 8086 e no 80286, uma soma de 32 bits
tinha que ser feita em duas etapas.
Alm da maioria das instrues antigas agora poderem tambm operar com
32 bits, existem vrias instrues novas. A maioria delas so aplicadas ao
gerenciamento de tarefas e ao gerenciamento de memria. So portanto
instrues para serem usadas pelo sistema operacional, e no pelos
programas comuns.
Foram ainda criados novos modos de endereamento mais poderosos.
Podemos por exemplo usar agora outros registrdores como EAX, EDX e
ECX para apontar a memria, coisa que no era permitida no 8086 nem no
80286. Podemos usar endereamentos dados por expresses como
[EDX*8+EAX] e expresses similares, permitindo o endereamento mais
rpido de matrizes, como por exemplo, uma rea de memria de vdeo onde
est sendo desenhado um grfico. Desta forma possvel manipular
estruturas de dados mais complexas utilizando um reduzido nmero de
instrues.
Existem ainda algumas novas instrues para manipulao de valores
binrios, mas no apresentam grande impacto sobre o desempenho. O ponto
forte para os programas comuns realmente o upgrade das antigas
instrues de 16 bits para 32 bits. Essas novas instrues de 32 bits podem
inclusive ser usadas (exceto as de endereamento) quando o processador
opera no modo real, no qual seu comportamento similar ao de um 8086.
Modo real
8-48
Hardware Total
Assim como ocorreu no 286, o modo real do 386 foi criado para oferecer
compatibilidade com os programas escritos para o 8086, como o DOS e seus
aplicativos. O modo real est presente tambm nos processadores modernos,
por isso possvel executar um boot com um disquete de DOS em um PC
equipado com o Pentium 4 e usar programas de modo real.
Modo protegido
8-49
Figura 8.17
Endereamento de memria no modo protegido.
8-50
Hardware Total
Figura 8.18
Paginao.
O 80386 opera com pginas de 4 kB. Todas essas pginas podem estar
fisicamente localizadas na memria RAM. Entretanto comum utilizar este
recurso para implementar a memria virtual. No Windows a memria virtual
consiste em um arquivo mantido no disco (swap file ou arquivo de troca), o
WIN386.SWP, localizado em C:\Windows. A RAM fisicamente dividida
em pginas de 4 kB, assim como o arquivo de troca, entretanto este arquivo
tem tamanho bem maior que a memria fsica.
Digamos que um PC tenha 64 MB de RAM e esteja configurado com uma
memria virtual de 256 MB. Usando um mecanismo de gerenciamento de
memria por paginao, tanto a memria fsica quanto a memria virtual
utilizaro pginas de 4 kB:
Memria fsica: 16.386 pgingas de 4 kB: total = 64 MB
Memria virtual: 65.536 pginas de 4 kB: total = 256 MB
Os programas podem ento acessar a memria como se existissem 256 MB
disponveis. Em um dado instante, apenas as pginas que esto mapeadas na
RAM podem ser acessadas pelos programas. Quando um programa faz o
acesso a um endereo de memria cuja pgina no est mapeada, ocorre
automaticamente uma interrupo (page fault) de software chamada
exceo restartvel. O atendimento desta interrupo feito pelo ncleo
do sistema operacional, que providencia uma pgina livre na RAM e copia
para a mesma o contedo da pgina correspondente da memria virtual.
Quando no existe pgina disponvel na RAM, o sistema operacional deve
transferir para o arquivo de troca, alguma pgina da RAM que esteja h mais
tempo sem ser usada. Terminada a liberao da pgina em RAM, o sistema
operacional providencia o retorno para a instruo que gerou a exceo.
Nete retorno, a instruo que tentou acessar a memria e no conseguiu
repetida automaticamente, e desta vez poder acessar a RAM.
8-51
8-52
Hardware Total
8-53
Figura 8.19
Nveis de privilgio do 386.
Pipeline do 386
8-54
Hardware Total
Arquitetura do 80486
Explicando em poucas palavras, um processador 80486 similar a um 80386,
acrescido de um coprocessador matemtico 80387, mais 8 kB de cache L1
integrada. Existem entretanto outras diferenas na arquitetura interna, sendo
a principal delas, o aumento do nmero de estgios pipeline. A figura 20
mostra o diagrama interno do 486.
*** 75%
Figura
8.20
Diagrama interno do
486.
8-55
Prefetch
Decode 1
Decode 2
Execution
Writeback
8-56
Hardware Total
Arquitetura do Pentium
Alm do aumento de clock, o uso de arquitetura pipeline foi utilizada nos
processadores 386 e 486 para aumentar o desempenho. O Pentium tambm
tem suas operaes de decodificao e execuo realizadas por 5 estgios, tal
qual o 486. A grande evoluo a introduo da arquitetura superescalar,
atravs da qual podem ser executadas duas instrues ao mesmo tempo.
Podemos ver na figura 22 o diagrama do Pentium, no qual encontramos os
mdulos U-Pipeline e V-Pipeline. Esses dois mdulos operam de forma
simultnea, e graas a eles possvel executar duas instrues ao mesmo
tempo. Outro melhoramento a adoo do barramento de dados com 64
bits, com a qual possvel reduzir os efeitos da lentido da memria RAM.
O Pentium tem ainda uma cache L1 maior, dividida em duas sees
independentes, sendo uma para cdigo e outra para dados. A unidade de
ponto flutuante foi reprojetada, e muito mais rpida que a do 486.
** 75%
Figura
8.22
Diagrama interno do
Pentium.
8-57
Arquitetura superescalar
MOVER:
V-Pipeline
8-58
Hardware Total
LAB00:
LAB01:
....
DEC CX
JNZ LAB01
MOV AX,1000
ADD AX,DX
MOV BX,2000
....
8-59
LAB01:
MOV SI,1000
MOV DI, 2000
MOV CX,100
LODSB
STOSB
DEC DX
JNZ LAB01
MOV AX,1000
.
8-60
Hardware Total
Microarquitetura P6
Esta arquitetura foi usada a partir de 1995, com o lanamento do Pentium
Pro, e sofreu algumas modificaes posteriores, dando origem ao Pentium II,
Celeron e Pentium III, bem como suas verses Xeon.
Uma das principais caractersticas desta nova arquitetura a introduo de
um velho conceito j usado h alguns anos em computadores mais
poderosos: a tecnologia RISC Reduced Instruction Set Computer.
CISC e RISC
8-61
8-62
Hardware Total
Previso de desvio
Anlise dinmica do fluxo de dados
Execuo especulativa
8-63
8-64
Hardware Total
LAB01:
MOV AX,2000
DEC BX
JZ LAB01
MOV AX,1000
INC CX
8-65
Figura 8.25
Diagrama interno de
processadores P6.
8-66
Hardware Total
Arquitetura do Pentium 4
O Pentium 4 e o Intel Xeon so os primeiros processadores a utilizarem a
nova arquitetura Netburst da Intel. Apesar de ter muitos pontos em comum
com a arquitetura P6, a Netburst um projeto totalmente novo.
8-67
Figura 8.26
Diagrama interno do Pentium
4.
8-68
Hardware Total
De 32 para 64 bits
Os processadores usados em praticamente todos os PCs modernos utilizam a
arquitetura x86, tambm chamada de IA-32. O termo x86 devido origem
dos processadores usados no PC, comeando com o a famlia 8086/8088.
Processadores 8086, 8088, 80186, 80188 e 80286 eram todos de 16 bits.
Significa que a maioria das suas instrues operavam com valores inteiros de
at 16 bits, e que praticamente todos os seus registradores internos tinham 16
bits.
O termo IA-32 mais novo, e significa Arquitetura Intel de 32 bits.
derivada do processador 80386. Todos os processadores usados nos PCs
modernos so derivados desta arquitetura. Em outras palavras, podemos
considerar o Pentium 4 e o Athlon como verses super velozes do 386,
acrescidos de alguns recursos, porm so todos baseados em conjuntos de
instrues compatveis com o do 386. Os termos x86 e IA-32 so usados
como sinnimos, sendo que a AMD prefere usar o termo x86, enquanto a
Intel prefere usar IA-32.
Tanto a Intel como a AMD esto entrando na era dos 64 bits, cada uma com
sua prpria arquitetura:
8-69
Intel: IA-64
AMD: AMD x86-64
Essas duas arquiteturas tm caractersticas distintas. Ambas so de 64 bits, ou
seja, utilizam registradores, valores e endereos de 64 bits, apesar de
poderem tambm manipular valores de 32, 16 e 8 bits.
Intel IA-64
8-70
Hardware Total
8-71
Alm da cache L3, o Itanium possui uma cache L1 com 32 kB (16 kB para
cdigo e 16 kB para dados) e cache L2 com 96 kB. Parece um tamanho
pequeno para uma cache L2, mas note que se compararmos com outros
processadores, a cache L3 de 2 MB ou 4 MB do Itanium que faz o trabalho
que em outros processadores feito pela cache L2, com 256 kB ou 512 kB.
Ainda baseado na tecnologia de 0,18, resultando na alta dissipao de calor
pelos seus 25 milhes de transistores do seu ncleo (sem contar os quase 300
milhes da cache L3), o Itanium ter sucessores baseados na nova tecnologia
de 0,13.
A figura 28 mostra em detalhes a vista superior do cartucho do Itanium.
Possui na sua parte lateral um conector exclusivo para alimentao. Existem
furos para a fixao do cooler e para fixar o cartucho na placa de CPU.
8-72
Hardware Total
Figura 8.28
Cartucho PAC418, vista superior.
8-73
O clock externo das primeiras verses do Itanium de 133 MHz com DDR,
produzindo resultados equivalentes ao de um clock de 266 MHz. Seu
barramento de dados tem 64 bits, portanto a taxa de transferncia mxima
terica de 2133 MB/s.
Modelo
Itanium/733
Itanium/800
Clock externo
133 MHz
133 MHz
Clock interno
733 MHz
800 MHz
Multiplicador
5,5x
6x
OBS: Esses so os modelos previstos ao final de 2001, antes do lanamento do Itanium. A Intel
atrasou o seu lanamento e trabalhava na nova verso do Itanium, o McKinley, com clocks
mais elevados.
8-74
Hardware Total
Figura 8.31
Identificao da voltagem para os chips
da cache L3 do Itanium.
8-75