Intel 8086 Intel 8086

Propaganda
28/3/2011
Família Intel 80x86
Arquitetura de Computadores
Ao se falar em processadores, é
inevitável deixar de citar a Intel
Corporation e sua influente
família 80x86, que é formada
pelos principais processadores
utilizados pelos computadores
pessoais.
Este
capítulo
dedica-se
a
apresentar uma visão geral deste
modelo de arquitetura e estudar
os principais componentes e
respectivas tarefas desta família
de processadores.
Arquitetura dos Processadores Intel
80x86
Prof. Marcos Quinet
Universidade Federal Fluminense – UFF
Pólo Universitário de Rio das Ostras - PURO
Intel 8086
2
Intel 8086
A família 80x86 começou em junho de 1978,
com
o
lançamento
do
processador
8086/8088*, que teve várias versões até 1982,
quando foi substituído pelo 80286.
A primeira versão lançada foi constituída por
29.000 transistores, e apresentava um
desempenho de 0.33 MIPS, a uma velocidade
de 5 MHz
Foram ainda lançadas versões de 8 e 10 MHz,
sendo que esta última atingia um desempenho
de 0.75 MIPS
3
O 8086 veio atender às necessidades de
aplicações que exigiam processamento de 16
bits, maior capacidade de memória, modos de
endereçamento mais sofisticados (para facilitar
a execução de programas escritos em
linguagem de alto nível) e suporte para
sistemas operacionais multiprogramados
A figura a seguir ilustra os principais elementos
da arquitetura do 8086
4
1
28/3/2011
Intel 8086
Intel 8086
O Intel 8088 possui a mesma organização do
8086, as únicas diferenças estão no tamanho da
fila de instruções (8 bytes no 8086 e 4 bytes no
8088) e no barramento de dados (16 bits no
8086 e 8 bits no 8088); devido as semelhanças,
estudaremos o 8086
A arquitetura do 8086 é dividida em 2 unidades
principais: a unidade de execução (EU –
Execution Unit) e a unidade de interface de
barramento (BIU – Bus Interface Unit)
5
Intel 8086
6
Intel 8086 – Unidade de Execução
Enquanto a EU abrange a unidade lógica e
aritmética e a unidade de controle, a BIU é
responsável por controlar os acesso externos à
memória principal e aos dispositivos de E/S
Se durante sua execução uma instrução requer
um acesso a um dado armazenado na memória,
a EU solicita o acesso a BIU
7
A ULA opera sobre dados de 8 ou 16 bits;
associado a ela existe um conjunto de 4
registradores de uso geral, denominados AX,
BX, CX e DX
Cada um destes registradores de 16 bits é
formado por uma metade inferior (AL, BL, CL e
DL) e por uma superior (AH, BH, CH e DH), onde
podem ser realizados acessos individuais,
constituindo cada metade um registrador de 8
bits
8
2
28/3/2011
Intel 8086 – Unidade de Execução
Intel 8086 – Unidade de Execução
Função dos registradores:
◦ AX: acumulador em instruções aritméticas e
lógicas;
◦ BX: usado por algumas instruções para armazenar
ponteiros para dados armazenados na memória
◦ CX: usado em instruções especiais, como o
controle de loop
◦ DX: usado como uma extensão do reg. AX em
instruções de multiplicação e divisão, armazenando
a metade superior de um produto de 32 bits ou de
um dividendo de 32 bits
Além dos de uso geral, existem na EU
registradores indexadores e apontadores, são
eles:
◦ SI (Source Index) e DI (Destination Index): utilizados
em operações envolvendo cadeias de caracteres
(strings)
◦ SP (Stack Pointer) e BP (Base Pointer) são
normalmente usados para realizar o acesso a pilha
em chamadas e retorno de rotinas; SP aponta para
o topo da pilha e o BP para a área de dados locais,
na pilha, da rotina em execução
◦ Flags e Operandos são usados para registrar
informações sobre o resultado de operações
aritméticas e lógicas e ainda, alguns bits de controle
9
10
Intel 8086 – Unidade da
Interface de Barramento
Intel 8086 – Unidade da
Interface de Barramento
Todos os acessos à memória e às interfaces de
E/S são controlados pela BIU. O 8086 possui
um barramento de endereço de 20 bits, que
suporta uma M.P. de até 1 MB
O 8086 acessa a memória organizada de forma
segmentada; nesta organização a memória é
dividida logicamente em blocos chamados
segmentos, cada um com um endereço-base
distinto
Uma locação de memória é referenciada
através de seu deslocamento (offset)
11
A BIU possui um conjunto de registradores de
segmento, onde cada registrador armazena dos
16 bits mais significativos do endereço-base do
segmento.
A cada acesso realizado, o valor do endereçobase é concatenado à esquerda com quatro bits
‘0’, formando um endereço de 20 bits; a este
endereço é somado o deslocamento (através de
um somador dedicado da BIU), resultando no
endereço da alocação
O deslocamento é um valor de 16 bits, o que
limita os segmentos a um tamanho máximo de
64 KB
12
3
28/3/2011
Intel 8086 – Unidade da
Interface de Barramento
Intel 8086 – Unidade da
Interface de Barramento
No 8086, um programa residente na memória é
dividido em 4 segmentos:
Para cada um destes segmentos existe um
registrador que armazena os 16 bits mais
significativos do endereço-base do segmento
correspondente. Estes registradores são:
◦ Segmento de código: contém as instruções do
programa;
◦ Segmento de dados: corresponde a área de
dados do programa;
◦ Segmento de pilha: área que se destina a pilha do
programa
◦ Segmento extra: área de dados adicional
◦
◦
◦
◦
CS: Code Segment register;
DS: Data Segment register;
SS: Stack Segment register;
ES: Extra Segment register.
13
Intel 8086 – Unidade da
Interface de Barramento
14
Intel 8086 – Unidade da
Interface de Barramento
Os quatro segmentos de um programa são
referenciados de acordo com o tipo de acesso a
memória, por exemplo, buscas de instruções são
feitas dentro do segmento de código indicado
pelo valor corrente no registrador de segmento
CS
No acesso a instruções, o deslocamento é dado
pelo conteúdo do registrador IP (Instruction
Pointer), que indica a próxima instrução a ser
buscada na memória
O reg. IP é diferente do contador de programas,
que indica a próxima instrução a ser executada
15
Acesso a dados em memória acontecem dentro
do segmento indicado pelo registrador DS, e o
deslocamento é gerado pelo programa, de
acordo com o modo de endereçamento usado
Acesso a dados também podem ocorrer dentro
do segmento extra, apontado pelo registrador
ES
Acesso à pilha ocorrem dentro do segmento de
pilha indicado pelo registrador SS
16
4
28/3/2011
Intel 8086 – Busca Antecipada
de Instruções
Intel 8086 – Busca Antecipada
de Instruções
O 8086 conta com um mecanismo de busca
antecipada de instruções (instruction prefetch),
para que o passo de busca de instrução seja
desvinculado dos demais passos de execução da
instrução
Desta forma, novas instruções podem ser
buscadas antecipadamente enquanto uma
instrução anterior ainda está sendo executada
Na busca antecipada, a fase de busca e a fase
de execução são separadas, e o tempo de busca
da instrução seguinte é “mascarado” pelo tempo
de execução da instrução corrente.
Na busca antecipada de instruções, é utilizada
uma fila de instruções, para manter as
instruções buscadas antecipadamente, até serem
buscadas pela EU
Uma
instrução
trazida
antecipadamente
permanece nesta fila até ser retirada pela EU
Em uma arquitetura sem busca antecipada, o PC
indica a próxima instrução a ser executada, que é
exatamente a próxima instrução a ser buscada
17
18
Intel 8086 – Busca Antecipada
de Instruções
Intel 8086 – conjunto de instruções
A busca antecipada reduz o tempo médio de
conclusão de cada instrução
Consequentemente, o tempo para executar um
certo número de instruções é menor, otimizando o
desempenho
Após o 8086, várias técnicas de paralelismo de
operações foram desenvolvidas, como no
pipelining e arquiteturas super-escalares
As instruções do 8086 podem ser classificas nos
seguintes grupos:
◦
◦
◦
◦
Instruções aritméticas;
Instruções lógicas;
Instruções de manipulação de strings;
Instruções de transferência de dados;
◦ Instruções de transferência de controle.
A arquitetura do 8086 é do tipo memória-registrador,
logo, as operações lógicas e aritméticas especificam
explicitamente 2 operandos, sendo que que um deles
atua como operando-fonte e operando-destino
◦ Apenas um dos operandos pode se encontrar na
memória
19
20
5
28/3/2011
Intel 8086 – conjunto de instruções
Intel 8086 – conjunto de instruções
As instruções aritméticas operam sobre números de 8
ou 16 bits, com ou sem sinal
Estão disponíveis instruções aritméticas específicas
para BDC
As instruções lógicas implementam as operações
booleanas básicas, instruções para deslocamento
aritmético e instruções para rotação do conteúdo de
registradores
Operações de manipulação de strings incluem:
movimentação
entre
regiões
de
memória,
comparação, procura de caracteres dentro da string e
transferência entre registradores e a memória
As instruções de transferência de dados
podem ser:
◦ de uso geral, que incluem as transferências
de dados entre registradores, registradores e
memória e acesso à pilhas;
◦ especiais,
utilizadas
para
carregar
registradores de segmento, salvar/carregar o
registrador de estado e para realizar o
acesso a interfaces de E/S
21
Intel 80286
Intel 8086 – conjunto de instruções
Instruções de transferência de controle podem
ser classificadas como:
◦ Condicionais: um desvio pode ou não ser
executado, dependendo se a condição testada pela
instrução é ou não verdadeira;
◦ Incondicionais: o desvio sempre é efetuado; são
instruções de chamada/retorno de rotinas e
instruções de controle de loop
22
Estão disponíveis instruções de transferência de
controle especiais, como INT, que provoca uma
interrupção, usada para implementar uma
chamada ao sistema operacional
23
As principais novidades na arquitetura do
80286 foram a execução de instruções em
pipeline e o suporte para memória virtual
Na arquitetura do 80286 foi implantado o
conceito de unidades independentes, que
realizam funções específicas:
◦ A unidade de barramento controla os acessos a
memória e interfaces de E/S, e realiza a busca
antecipada de instruções, colocadas em uma fila
na unidade de barramento
24
6
28/3/2011
Intel 80286
Intel 80286
A unidade de instrução decodifica as
instruções,
colocando
as
instruções
decodificadas em uma fila; a instrução
decodificada fornece de maneira mais
detalhada todas as informações necessárias à
execução da instrução
A unidade de controle, a ULA e o conjunto de
registradores formam a unidade de execução
◦ A unidade de execução retira da fila da UI as
instruções já decodificadas
◦ A ULA do 80286 é de 16 bits e o conjunto de
registradores é idêntico ao do 8086
25
26
Intel 80286
Intel 80286 – modos de operação
A unidade de endereço é responsável por
controlar a memória virtual, o que torna possível
a execução de programas com tamanho de
código maior do que a capacidade da memória
principal
27
O 80286 pode operar em dois modos,
chamados modo real e modo protegido
No modo real, o 80286 opera com um modelo
de memória semelhante ao do 8086, contando
com uma memória segmentada de 1 Mbyte
No modo protegido é utilizada a memória
virtual; neste modo, é dividida em 16384
segmentos, cada um com 64 Kbytes de
capacidade
Em teoria, seria possível executar programas
com até 1 Gbyte de tamanho, mas devido ao
barramento de endereço externo de 24 bits, o
tamanho máximo de MP é de 16 Mbytes
28
7
28/3/2011
Intel 80286 – modos de operação
No modo protegido é possível a execução de
sistemas operacionais multiprogramados de
maneira mais eficiente, uma vez que provê
proteção entre segmentos pertencentes a
diferentes programas
É importante observar que estes dois modos de
operação são estáticos: quando o 80286 é
iniciado, começa a operar no modo real; a
execução de uma instrução especial comuta sua
operação para o modo protegido, e permanece
neste modo até que seja reiniciado
Intel 80286 – modos de operação
Programas para o 8086 não podem ser
executados no modo protegido, pois quando o
sistema passa a funcionar neste modo, os
registradores de segmento assumem funções
diferentes daquelas no 8086 (uma limitação
corrigida no 80386)
As diversas unidades no 80286 podem operar
simultaneamente, realizando tarefas que fazem
parte da execução de diferentes instruções,
implementando a técnica conhecida como
pipeline; no 8086 a execução é puramente
sequencial
29
Intel 80386
30
Intel 80386
Devido a um período de transição, foram
lançadas duas versões do Intel 80386:
◦ SX: barramento de dados externo é de 16 bits;
◦ DX: barramento de dados externo é de 32 bits;
A arquitetura do 80386 é formada por oito
unidades lógicas, cujas funções básicas são:
◦ Bus Interface Unit (Unidade de barramento):
responsável por controlar os acessos externos à
memória e interfaces de E/S; recebe os pedidos de
acesso à memória de várias outras unidades
31
32
8
28/3/2011
Intel 80386
Intel 80386
Prefetch unit: realiza a busca antecipada de
instruções; possui uma fila de instruções, com
capacidade de 16 bytes, que solicita acessos à
memória para a unidade de barramento sempre
que a fila estiver parcialmente vazia ou quando
uma instrução de transferência de controle é
executada
Decode unit: retira uma instrução da fila de
instruções e gera uma instrução decodificada,
que é armazenada na fila de instruções
decodificadas (decoded queue) que, por sua
vez, são retiradas pela unidade de controle para
serem executadas
A unidade de dados (data unit) é formada por
uma ULA e um conjunto de registradores de 32
bits, representado abaixo:
31
16
15
0
AH
AX
AL
BH
BX
BL EBX
EAX
CH
CX
CL
ECX
DH
DX
DL
EDX
ESP
EBP
ESI
EDI
33
34
Intel 80386
Intel 80386
Existem 4 registradores de dados de 32 bits
(EAX, EBX, ECX e EDX) nos quais podem ser
feitos acessos a metade inferior de cada um,
como registradores de 16 bits (AX, BX, CX e
DX) que, por sua vez, podem ser considerados
como formados por dois registradores de 8 bits,
mantendo a compatibilidade com arquiteturas
anteriores
Os registradores apontadores ESP e EBP e os
registradores indexadores ESI e EDI são
realizados acesso apenas como registradores
de 32 bits
35
A memória virtual do 80386 é gerenciada pela
três unidades restantes: protection unit,
segmentation unit e paging unit
O 80386 implementa um modelo de memória
virtual organizada em segmentos e páginas;
◦ A unidade de proteção verifica se um endereço se
encontra dentro dos limites de um segmento;
◦ As unidades de segmentação e paginação
realizam a conversão entre endereços virtuais e
endereços reais
36
9
28/3/2011
Intel 80386
Intel 80386
Além dos modos real e protegido, já existentes no
80286, o 80386 possui mais um modo, chamado
modo 8086 virtual
Neste modo, programas desenvolvidos para o
8086 podem ser executados em um ambiente
multiprogramado protegido
No 80386 é possível comutar livremente do modo
protegido para o modo real e vice-versa, o que
ocorre, por exemplo, na abertura de uma janela
MS-DOS na interface gráfica Windows (que
executa em modo protegido), possibilitando a
execução de programas escritos para o 8086
(modo virtual)
A arquitetura do 80386 inclui todas as instruções
disponíveis nas versões anteriores, além de
várias outras, com destaque para as de teste de
bits, procura de caracteres em strings e
movimentação e conversão de dados
No 80386 estão disponíveis 11 modos de
endereçamento (incluindo os usados em
versões anteriores) além de um novo
componente utilizado no cálculo do endereço
efetivo, chamado escala (scale)
37
Intel 80386
38
Intel 80486
Escala é um fator (1, 2, 4 ou 8) que multiplica o
índice nos modos de endereçamento indexado
A escala facilita o acesso a vetores com
elementos de 16, 32 ou 64 bits; por exemplo,
para percorrer um vetor com elementos de 32
bits, são necessários incrementos de 4 bytes no
endereço efetivo
Se for utilizada uma escala 4, cada incremento
de 1 do índice resulta, após a multiplicação do
índice pela escala, no incremento de 4 bytes no
endereço efetivo
39
Do ponto de vista arquitetural, o 80486 é
basicamente uma extensão da arquitetura do
80386, contendo uma memória cache de 8
Kbytes e uma unidade de ponto flutuante
Em sistemas baseados no 80386 a memória
cache e a unidade de ponto flutuante são
externos ao processador
40
10
28/3/2011
Intel 80486
Intel 80486
Uma estratégia de mercado muito utilizada nesta
época e que é empregada até hoje são as
diferentes versões de implementação, oferecendo
diferentes recursos com custos variados
◦ 80486-SX: não possui a unidade de ponto flutuante
integrada com o processador, apenas a memória
cache
◦ 80486-DX: possui unidade de ponto flutuante e
cache integradas com o processador; a frequência
de clock do processador é a mesma usada nos
ciclos de barramento para acessos à memória e
interfaces de E/S
41
42
Intel 80486
Intel 80486 – memória cache
80486-DX2: a frequência de clock interna ao
processador é o dobro da frequência externa
usada nos ciclos de barramento, o que permite a
compatibilidade entre versões mais novas do
processador com hardware de sistemas mais
antigos e lentos
Foi lançada ainda uma versão DX4 do 80486,
com o clock interno triplicado, mas ficou pouco
conhecida por ter sido lançada após o Pentium
O 80486 possui uma cache com capacidade de
8 kbytes, para o armazenamento de instruções
e dados, organizada em 128 conjuntos de 4
linhas cada
tag
controle
linha 0 (16 bytes)
linha 1
linha 2
conjunto 0
linha 3
...
...
...
conjunto 127
43
44
11
28/3/2011
Intel 80486 – memória cache
Intel 80486 – memória cache
O 80486, assim como a maioria dos
processadores, utiliza um modelo de cache nassociativa por conjunto
Um endereço de cache é composto pelos
seguintes campos:
◦ Byte, formado pelos 4 bits menos significativos;
◦ Conjunto, formado pelos 7 bits seguintes;
◦ Tag, formado pelos 21 bits mais significativos do
endereço.
Observe que o tamanho destes campos está
relacionado com a configuração da cache, que
pode variar entre diferentes processadores
45
46
Intel 80486 – memória cache
Intel 80486 – memória cache
A não coincidência do tag do endereço com os
tags armazenados no conjunto indica que o byte
referenciado não se encontra na cache (cache
miss)
É usado um bit de controle para saber se o bloco
armazenado em uma linha selecionado foi ou
não modificado desde o seu carregamento na
cache
No caso da substituição de blocos, o bit de
controle serve para determinar se o bloco
selecionado pode ser simplesmente descartado
ou deve atualizar o dado correspondente na M.P.
47
A memória cache no 80486 utiliza a política de
substituição LRU (Least Recently Used)
Para minimizar os caches misses residuais, o
80486 implementa uma memória cache
secundária, em uma estrutura conhecida como
memória cache de dois níveis
A quantidade de memória cache varia
dependendo do modelo do 80486; a cache
primária é integrada ao processador e possui um
tamanho de no máximo 64 Kbytes; a cache
secundária é externa ao processador e pode
chegar a capacidade de 512 Kbytes
48
12
28/3/2011
Intel 80486 – memória virtual
Intel 80486 – memória virtual
Como possui suporte a memória virtual, o 80486
pode operar em dois modos:
◦ No modo real, o mecanismo de memória virtual é
desativado, e o modelo de memória é idêntico ao
do 8086: os programas visualizam uma memória
segmentada, com um tamanho máximo de 1 Mbyte
◦ No modo protegido, o mecanismo de memória
virtual é ativado, e o espaço de endereçamento é
de 64 Tbytes, enquanto o tamanho do espaço de
endereçamento real é de 4 Gbytes
O 80486 suporta os modelos de memória virtual
segmentada e paginada
O endereçamento virtual é organizado em
segmentos com tamanho entre 1 byte e 4
Gbytes, e cada segmento, por sua vez, pode ser
subdivido em páginas com 4 Kbytes de tamanho
O exemplo a seguir ilustra duas situações: na
primeira, a utilização de memória virtual apenas
segmentada; na segunda, com a paginação
ativada, o DAT de segmentação gera um
endereço linear, que por sua vez é convertido
pelo DAT de paginação no endereço real
O uso da memória virtual requer uma unidade de
MMU (Memory Management Unit), que contém o
hardware necessário ao uso da memória virtual
49
Intel 80486 – memória virtual
50
Intel 80486 – memória virtual
OBS: DAT (Dynamic Address Translator): realiza o
mapeamento entre um endereço físico real e um
endereço virtual, gerado pelo sistema
51
Na M.V. segmentada, o DAT considera que os
endereços virtuais são formados por um seletor
de segmento (segment selector) de 14 bits e um
deslocamento (offset) de 32 bits
O seletor de segmento é formado pelos 14 bits
mais significativos de um dos registradores de
segmento disponíveis
O deslocamento é o próprio endereço gerado
pelo programa, e indica a posição do byte onde
será feito o acesso em relação ao início do
segmento
52
13
28/3/2011
Intel 80486 – memória virtual
segmentada
Intel 80486 – memória virtual
segmentada
Os 13 bits mais significativos do seletor de
segmento são usados para indexar uma tabela
de descritores
A tabela de descritores desempenha o papel da
tabela de mapeamento: cada entrada da tabela
contém um descritor de segmento que, dentre
outras informações, indica o endereço-base do
segmento na memória principal
O endereço-base da tabela de descritores é
armazenada em um registrador específico, o
DTR (Description Table Register)
53
Intel 80486 – memória virtual
segmentada
54
Intel 80486 – memória virtual
segmentada
55
O seletor de segmento é concatenado ao
endereço em DRT, resultando no endereço de
um descritor de segmento
O deslocamento é então somado ao endereçobase do segmento indicado pelo descritor de
segmento, resultando no endereço real do byte
referenciado
56
14
28/3/2011
Intel 80486 – memória virtual
paginada
Intel 80486 – memória virtual
paginada
Na paginação do 80486, o mapeamento é feito
em dois níveis: primeiro, existe uma tabela de
diretório, que indica os endereços-base das
tabelas no segundo nível
O campo recebido do DAT de segmentação é
dividido logicamente em três campos:
◦ Diretório: com 10 bits, para acessar uma entrada
na tabela de diretório;
◦ Tabela: com 10 bits, é usado para o acesso a uma
entrada em uma das tabelas de página;
◦ Deslocamento: com 12 bits, indica a posição do
byte dentro da página
Cada tabela no segundo nível é chamada de
tabela de página, e contém os endereços-base
das páginas na memória principal
57
58
Intel 80486 – memória virtual
paginada
59
15
Download