Você está na página 1de 106

2

Apostila de Arquitetura de Computadores Prof Bruno


SUMRIO
1 INTRODUO .................................................................................................... 4
1.1 O CONCEITO DE ARQUITETURA ....................................................................... 4
1.2 NVEIS DE ARQUITETURA ................................................................................ 5
2 CONCEITOS BSICOS DE ARQUITETURA DE PROCESSADOR .......... 7
2.1 A SEO DE PROCESSAMENTO ........................................................................ 7
2.2 A EXECUO DE INSTRUES ......................................................................... 9
2.3 A SEO DE CONTROLE ................................................................................ 12
2.4 O SINAL DE CLOCK ....................................................................................... 14
2.5 IMPLEMENTAO DA UNIDADE DE CONTROLE .............................................. 15
3 O CONJUNTO DE INSTRUES DO PROCESSADOR ........................... 18
3.1 CONJUNTO DE INSTRUES NO CONTEXTO DE SOFTWARE ............................ 18
3.2 TIPOS DE INSTRUES E DE OPERANDOS ....................................................... 19
3.3 NMERO E LOCALIZAO DOS OPERANDOS ................................................. 21
3.4 MODOS DE ENDEREAMENTO ....................................................................... 22
3.5 FORMATOS DE INSTRUO ............................................................................ 26
4 A ARQUITETURA DOS PROCESSADORES INTEL 80X86 ..................... 28
4.1 QUADRO EVOLUTIVO DA FAMLIA INTEL 80X86 ........................................... 28
4.2 O INTEL 8086/8088 ....................................................................................... 29
4.2.1 A Unidade de Execuo ........................................................................... 30
4.2.2 A Unidade de Interface de Barramento (BIU) ......................................... 31
4.2.3 O Conjunto de Instrues do 8086 .......................................................... 33
4.3 O INTEL 80186/80188 ................................................................................... 38
4.4 O INTEL 80286 .............................................................................................. 39
4.5 A ARQUITETURA DO INTEL 80386 ................................................................. 41
4.6 A ARQUITETURA DO INTEL 80486 ................................................................. 43
4.7 O INTEL PENTIUM ......................................................................................... 44
5 O SUB-SISTEMA DE MEMRIA .................................................................. 46
5.1 A INTERAO ENTRE PROCESSADOR E MEMRIA PRINCIPAL ........................ 46
5.1.1 Ciclo de Barramento ................................................................................ 48
5.1.2 Estados de Espera .................................................................................... 49
5.2 TIPOS DE DISPOSITIVOS DE MEMRIA ........................................................... 51
5.3 MEMRIAS CACHE ........................................................................................ 52
5.3.1 A Memria Cache no Intel 80486 ............................................................ 55
5.3.2 Memrias Cache Primria e Secundria ................................................ 58
5.4 MEMRIA VIRTUAL ...................................................................................... 58
5.4.1 O Conceito de Memria Virtual .............................................................. 59
5.4.2 O Mecanismo de Memria Virtual .......................................................... 59
5.4.3 A Memria Secundria ............................................................................ 62
5.4.4 Memria Virtual no Intel 80486 .............................................................. 64
6 O SUB-SISTEMA DE ENTRADA/SADA ..................................................... 70
6.1 A INTERAO ENTRE PROCESSADOR E INTERFACES DE E/S .......................... 70
3
Apostila de Arquitetura de Computadores Prof Bruno
6.2 ORGANIZAO DE UMA INTERFACE DE E/S ................................................... 71
6.3 TCNICAS DE TRANSFERNCIA DE DADOS .................................................... 73
6.3.1 E/S com Polling ....................................................................................... 73
6.3.2 E/S com Interrupo ................................................................................ 75
6.3.3 E/S com Acesso Direto Memria .......................................................... 77
6.4 PADRES DE BARRAMENTOS ........................................................................ 79
6.4.1 Barramentos Locais ................................................................................. 80
6.4.2 Barramentos de Perifricos ..................................................................... 81
7 TPICOS ESPECIAIS ..................................................................................... 83
7.1 A TCNICA DE PIPELINING ............................................................................ 83
7.2 ARQUITETURAS SUPER-ESCALARES .............................................................. 86
7.3 A ARQUITETURA ALPHA AXP ...................................................................... 87
7.4 ARQUITETURA DO PENTIUM .......................................................................... 90
7.5 A ARQUITETURA POWERPC 601 ................................................................... 93
7.6 ARQUITETURAS RISC ................................................................................... 96
7.6.1 Lacuna Semntica .................................................................................... 96
7.6.2 Crticas s Arquiteturas Complexas ........................................................ 99
7.6.3 A Filosofia RISC .................................................................................... 101
7.6.4 Caractersticas das Arquiteturas RISC.................................................. 102
7.6.5 Histrico das Arquiteturas RISC ........................................................... 102
7.7 SISTEMAS PARALELOS ................................................................................ 103
7.7.1 Sistemas SISD ........................................................................................ 104
7.7.2 Sistemas SIMD ....................................................................................... 104
7.7.3 Sistemas MISD ....................................................................................... 105
7.7.4 Sistemas MIMD ...................................................................................... 105

4
Apostila de Arquitetura de Computadores Prof Bruno
1 INTRODUO
1.1 O Conceito de Arquitetura
Este um curso introdutrio sobre arquitetura de computadores.
importante, em primeiro lugar, definir precisamente o significado que aqui ser dado
ao termo arquitetura de computador. A arquitetura de um computador um
modelo da organizao e funcionamento de um sistema de processamento. A
descrio da arquitetura destaca as funes dos componentes bsicos de um
computador, a interconexo destes componentes e o modo como os componentes
interagem.
Este curso focaliza aqueles tipos de sistemas que j fazem parte do nosso
cotidiano profissional, basicamente microcomputadores e estaes de trabalho. A
Figura 1.1 mostra a organizao tpica destes dois tipos de sistemas.
Processador
Memria
Principal
Disco
.
Vdeo Rede
Interface
de E/S
Interface
de E/S
Interface
de E/S

Figura 1.1. Organizao tpica de um computador.
Esta figura mostra os trs componentes bsicos de um computador: o
processador (tambm conhecido como unidade central de processamento), a
memria principal e as interfaces de entrada e sada. O processador o
componente ativo, controlador de todo o sistema. o processador que realiza todas
as operaes sobre os dados, de acordo com o indicado pelas instrues no cdigo
do programa. A memria principal armazena as instrues que so executadas pelo
processador, e os dados que sero manipulados. As interfaces de entrada e de
sada so as portas de comunicao para o mundo externo, s quais esto
conectados os dispositivos perifricos tais como vdeo, teclado, discos e
impressora.
5
Apostila de Arquitetura de Computadores Prof Bruno
Estes componentes esto interconectados por meio de um barramento,
atravs do qual o processador realiza o acesso a instrues e dados armazenados
na memria principal. tambm atravs deste mesmo barramento que o
processador recebe ou envia dados de ou para as interfaces de entrada/sada.
Instrues e dados esto armazenados em locaes de memria, na memria
principal. Para realizar o acesso a uma informao, o processador envia para a
memria, atravs do barramento, o endereo da locao de memria que contm a
informao aonde ser feito o acesso. A informao trocada entre o processador
e a memria tambm atravs do barramento. O acesso interfaces de
entrada/sada semelhante, sendo cada interface identificada por um endereo
nico.
A Figura 1.1 e a discusso a ela associada descrevem sucintamente a
arquitetura de um computador. Conforme mencionado acima, esta descrio indica
quais so os componentes bsicos da arquitetura (processador, memria principal e
interfaces) e suas funes, como esto interconectados (atravs de um barramento)
e como interagem (troca de endereos, instrues e dados atravs do barramento).
Nos captulos que se seguem, esta arquitetura ser descrita em maiores detalhes.
1.2 Nveis de Arquitetura
Na realidade, o conceito de arquitetura pode ser aplicado a diferentes
sistemas de hardware e software, levando a diversos nveis de arquitetura conforme
mostra a Figura 1.2.
Arquitetura de Processador
Arquitetura de Computador
Arquitetura de Sistema Operacional
Arquitetura de Rede

Figura 1.2. Nveis de arquitetura.
O nvel de arquitetura de processador descreve a organizao e o
funcionamento de um dos componentes de um sistema de processamento. Neste
nvel so descritos os elementos bsicos de um processador, o modo como
instrues so executadas pelo processador e o seu conjunto de instrues. O
prximo nvel o de arquitetura de computador que, como j visto, descreve o
sistema de processamento como um todo.
O nvel acima o de arquitetura de sistema operacional. Em termos simples,
o sistema operacional serve de interface entre o hardware do computador e o
usurio, tornando os detalhes de operao do computador transparentes ao
usurio. Neste nvel, so descritas a organizao e as funes de um sistema
operacional e especificados os servios por ele oferecidos. Finalmente, o nvel de
6
Apostila de Arquitetura de Computadores Prof Bruno
rede de computadores aborda um sistema formado por computadores interligados
por um meio de comunicao. No nvel de arquitetura de redes descrita a conexo
fsica entre os computadores, bem como os protocolos de comunicao usados na
troca de informaes entre os computadores.
muito importante perceber que estes nveis de arquitetura no esto
isolados. O perfeito entendimento de um certo nvel exige uma compreenso de
vrios aspectos de um ou mais nveis inferiores. Por exemplo, para entender o
gerenciamento de memria virtual um assunto que tratado dentro do nvel de
arquitetura de sistema operacional necessrio conhecer o suporte para
memria virtual oferecido pelo processador, o que abordado a nvel de arquitetura
de processador. Atualmente, est cada vez mais claro que o pleno domnio de
algumas reas da computao exige do indivduo uma viso de conjunto destes
quatro nveis de arquitetura.
7
Apostila de Arquitetura de Computadores Prof Bruno
2 CONCEITOS BSICOS DE ARQUITETURA DE PROCESSADOR
Este captulo descreve a arquitetura bsica de um processador. Podemos
considerar que um processador organizado em duas unidades, a seo de
processamento e a seo de controle. Este captulo descreve os principais
componentes em cada uma destas unidades. Dentro deste contexto, o captulo
tambm descreve como um processador executa as instrues de um programa.
No captulo seguinte, aborda-se um tema central na arquitetura de um processador,
qual seja, o seu conjunto de instrues.
2.1 A Seo de Processamento
A seo de processamento formada basicamente pela unidade lgica e
aritmtica (ALU) e por diversos registradores. Estes componentes normalmente
esto organizados conforme mostra a Figura 2.1.
ALU
PC
MAR
registradores de dados
R0
R1
R31
.
.
.
B
R
A
estado
MDR
S1 S2 D

Figura 2.1. Componentes da seo de processamento.
A ALU realiza as operaes aritmticas, tais como adio e subtrao, e
operaes lgicas, tais como and, or, not. Podemos dizer ento que a ALU o
componente da arquitetura que, de fato, processa os dados. Os registradores so
utilizados para armazenar informaes internamente no processador. Um
8
Apostila de Arquitetura de Computadores Prof Bruno
registrador pode ser utilizado tanto para acesso de leitura quanto para acesso de
escrita: uma informao armazenada no registrador em uma operao de escrita,
enquanto a informao contida no registrador recuperada em uma operao de
leitura.
A Figura 2.1 mostra aqueles registradores normalmente encontrados na
seo de processamento. Os diversos registradores possuem um uso bem definido
dentro da arquitetura, e de uma maneira geral podem ser classificados em trs
tipos: registradores de uso geral, registradores de uso especfico e registradores
auxiliares. Registradores de uso geral normalmente so usados para armazenar
dados que sero processados pela ALU, bem como resultados produzidos pela
ALU. Na seo de processamento mostrada na Figura 2.1, existem 32 registradores
de uso geral, denominados R0,...,R31. Coletivamente, estes registradores so
chamados de conjunto de registradores de dados (data register file).
O registrador de estado (status register) associado ALU um registrador
de uso especfico, e contm informaes sobre o resultado produzido pela ALU.
Este registrador possui bits sinalizadores que so ativados ou desativados
1
de
acordo com o tipo de resultado produzido pela ALU. Por exemplo, o registrador de
estado pode ter um bit denominado Z, o qual ativado quando o resultado for nulo
e desativado quando o resultado for no-nulo. Tambm comum encontrar no
registrador de estado um bit chamado N que ativado se o resultado for negativo,
sendo desativado se o resultado for positivo.
Um outro exemplo de registrador de uso especfico o contador de programa
(program counter). O contador de programa contm o endereo da locao de
memria onde se encontra a prxima instruo a ser executada pelo processador.
Os registradores auxiliares normalmente so usados para armazenamento
temporrio. Este o caso dos registradores A e B, que armazenam os operandos
de entrada da ALU, enquanto estes esto sendo processados. Antes de cada
operao da ALU, os operandos so transferidos dos registradores de dados ou da
memria principal para estes registradores temporrios. O resultado produzido pela
ALU temporariamente armazenado no registrador R at ser transferido para o seu
destino, que pode ser um registrador de dados ou a memria principal. A Figura 2.1
mostra dois outros registradores temporrios, denominados MAR (memory address
register) e MDR (memory data register). O MAR armazena o endereo da locao
de memria onde ser feito o acesso, ao passo que o MDR armazena
temporariamente a informao transferida de ou para a locao de memria
endereada por MAR. Em geral, registradores auxiliares no so visveis, no sentido
que um programador de baixo nvel no dispe de instrues para acessar
diretamente tais registradores.
A interligao entre a ALU e os registradores feita atravs de trs vias,
chamadas barramentos internos. Os barramentos internos S1 e S2 permitem a
transferncia de dados dos registradores para a ALU. O barramento interno D

1
Considera-se aqui que um bit ativado quando ele recebe o valor lgico 1, sendo
desativado ao receber o valor lgico 0.
9
Apostila de Arquitetura de Computadores Prof Bruno
permite a transferncia do resultado produzido pela ALU, temporariamente
armazenado no registrador R, para outro registrador.
Uma arquitetura de processador uma arquitetura de n bits quando todas as
operaes da ALU podem ser realizadas sobre operandos de at n bits.
Normalmente, em uma arquitetura de n bits os registradores de dados e os
barramentos internos tambm so de n bits, de forma a permitir que os dados
sejam armazenados e transferidos de forma eficiente.
2.2 A Execuo de Instrues
Tendo examinado os componentes e a organizao da seo de
processamento, podemos agora analisar como as instrues so executadas. A
execuo de uma instruo envolve a realizao de uma seqncia de passos, que
podemos chamar de passos de execuo. Em geral, a execuo de uma instruo
envolve quatro passos, como mostra a Figura 2.2.
decodificao execuo busca resultado

Figura 2.2. Passos na execuo de uma instruo.
No primeiro passo, denominado busca, o processador realiza o acesso ao
cdigo binrio da instruo, armazenado na memria principal. A etapa seguinte a
decodificao da instruo, na qual as informaes contidas no cdigo da instruo
so interpretadas. Em algumas arquiteturas, neste passo tambm so acessados
os dados usados pela instruo. Aps a decodificao, a execuo da instruo
entra no terceiro passo, denominado execuo, no qual a operao indicada pela
instruo (por exemplo, uma operao na ALU) efetuada. Finalmente no quarto
passo, chamado resultado, armazenado em um registrador ou na memria o
resultado produzido pela instruo.
Cada passo de execuo envolve a realizao de vrias operaes bsicas.
As operaes bsicas acontecem dentro da seo de processamento, sob a
coordenao da seo de controle. Existem quatro principais tipos de operaes
bsicas:
transferncia de dados entre os registradores e a ALU;
transferncia de dados entre os registradores;
transferncia de dados entre os registradores e a memria;
operaes aritmticas e lgicas realizadas pela ALU.

Esta sub-diviso dos passos de execuo em operaes bsicas pode ser
visualizada na Figura 2.3.
10
Apostila de Arquitetura de Computadores Prof Bruno
decodificao execuo busca resultado

Figura 2.3. Diviso dos passos de execuo em operaes bsicas.
A sub-diviso dos passos sugerida pela Figura 2.3 apenas um exemplo
ilustrativo. Os passos de execuo no possuem necessariamente o mesmo
nmero de operaes bsicas em todas as instrues. O que diferencia cada
instruo justamente o nmero e o tipo de operaes bsicas executadas em
cada passo.
Para tornar mais claro o mecanismo de execuo de instrues, considere
uma arquitetura com uma seo de processamento idntica da Figura 2.1.
Considere tambm que a arquitetura oferece quatro tipos de instrues: instrues
aritmticas e lgicas, instrues de desvio incondicional e condicional, e instrues
de acesso memria. Exemplos destes tipos de instrues aparecem no quadro da
Figura 2.4.
Tipo Exemplo Descrio
aritmtica/lgica
ADD Rs1,Rs2,Rd
O contedo dos registradores Rs1 e
Rs2devem ser somados e o resultado
armazenado em Rd.
desvio
incondicional
JMP dst
A prxima instruo a ser executada deve ser
a que se encontra na locao de memria
com endereo dst.
desvio condicional
JZ dst
A prxima instruo a ser executada deve ser
a que se encontra no endereo dst, caso o bit
Z no registrador de estado esteja ativado.
acesso memria
LOAD end,R1
O dado armazenado na locao de memria
com endereo end deve ser transferido para o
registrador R1.
Figura 2.4. Exemplos de instrues.
A Figura 2.5 apresenta um exemplo hipottico relacionando, para cada tipo de
instruo, as operaes bsicas que acontecem dentro de cada passo de
execuo. Nesta figura, Ry Rx representa a transferncia do contedo do
registrador Rx para o registrador Ry. M[R] denota o contedo da locao de
memria cujo endereo est no registrador R. Finalmente, IR (instruction register)
representa um registrador especial que recebe o cdigo da instruo a ser
executada, enquanto PC o contador de programa.
Aritmticas e
Lgicas
Desvios
Incondicionais
Desvios
Condicionais
Acessos
Memria
11
Apostila de Arquitetura de Computadores Prof Bruno
Busca MAR PC
MDR
M[MAR]
IR MDR
PC++

MAR PC
MDR
M[MAR]
IR MDR
PC++
MAR PC
MDR M[MAR]
IR MDR
PC++
MAR PC
MDR M[MAR]
IR MDR
PC++
Decodificao decod
A Rs1
B Rs2

decod

decod

decod

Execuo R A op B PC destino cond
se (cond) PC
destino
MAR end
MDR Rs (E)
M[MAR] MDR (E)
MDR M[MAR] (L)

Resultado Rd R Rd MDR (L)
Figura 2.5. Operaes bsicas na execuo de instrues.
O passo de busca idntico para todos os tipos de instrues e envolve
quatro operaes bsicas: (1) o contedo do contador de programa transferido
para o registrador de endereo de memria MAR; (2) realizado oacesso
memria, usando o endereo em MAR; (3) o cdigo de instruo recebido da
memria, temporariamente armazenado em MDR, transferido para o registrador
de instruo IR (este registrador faz parte da seo de controle, como ser visto
mais frente); (4) contador de programa incrementado, passando a indicar a
prxima instruo onde ser feito o acesso e executada.
Concludo o passo de busca, inicia-se o passo de decodificao da
instruo armazenada em IR. A interpretao do cdigo da instruo indicado por
decod na Figura 2.5. Como mencionado, em algumas arquiteturas este passo
tambm inclui o acesso aos operandos da instruo. Na Figura 2.5, isto indicado
pela transferncia do contedo dos registradores de dados Rs1 e Rs2 para os
registradores temporrios A e B, respectivamente, no caso de instrues aritmticas
e lgicas.
O prximo passo o de operao. As operaes bsicas neste passo
dependem inteiramente do tipo de instruo que est sendo executada. No caso
das instrues aritmticas e lgicas, este passo corresponde execuo pela ALU
12
Apostila de Arquitetura de Computadores Prof Bruno
da operao indicada na instruo, utilizando como operandos o contedo dos
registradores A e B, com armazenamento do resultado no registrador R.
Em instrues de desvio incondicional, apenas uma operao bsica
realizada: o endereo destino carregado no contador de programa. Como o
contador de programa indica a prxima instruo a ser executada, isto resulta em
um desvio para a instruo armazenada no endereo destino. Em desvios
condicionais, o contador de programa modificado somente se a condio de
desvio for verdadeira. A avaliao da condio de desvio indicada por cond, na
Figura 2.5. O endereo destino carregado no contador de programa apenas se a
condio de desvio testada for verdadeira.
Em instrues de acesso memria, o passo de execuo inicia-se com a
transferncia do endereo da locao onde ser feito o acesso para o registrador
MAR. As demais operaes bsicas dependem se o acesso de escrita (indicadas
por E) ou de leitura (indicadas por L). No caso de uma escrita, so executadas duas
operaes bsicas: a transferncia do dado a ser escrito para o registrador MDR e
a escrita na memria propriamente dita. No caso de uma leitura, a realizado o
acesso locao de memria e o dado obtido armazenado no registrador MDR.
O ltimo passo o de armazenamento do resultado. Em instrues
aritmticas e lgicas, o resultado no registrador R transferido para o registrador
destino indicado na instruo. Em instrues de leitura memria, o dado que se
encontra no registrador MDR transferido para o registrador destino.
importante salientar que o quadro na Figura 2.5 extremamente
simplificado. Por exemplo, na prtica um acesso memria no feito por uma
nica operao bsica como indicado, mas normalmente requer vrias operaes
bsicas. No entanto, este quadro reflete corretamente como a execuo de uma
instruo logicamente organizada.
2.3 A Seo de Controle
Como mencionado anteriormente, as operaes bsicas que ocorrem dentro
da seo de processamento so todas comandadas pela seo de controle. Ao
efetuar a busca da instruo, a unidade de controle interpreta a instruo de modo
a identificar quais as operaes bsicas que devem ser realizadas, e ativa sinais de
controle que fazem uma operao bsica de fato acontecer.
A Figura 2.6 apresenta um diagrama em blocos da seo de controle e, de
forma bastante simplificada e ilustrativa, a sua interligao com a seo de
processamento. Como mostra a figura, a seo de controle formada basicamente
pela unidade de controle e pelo registrador de instruo, ou IR (Instruction
Register). A interpretao do cdigo da instruo e a ativao dos sinais de
controle so realizados pela unidade de controle. Os sinais de controle que so
ativados, bem como a seqncia com que so ativados, depende de cada instruo
em particular.
13
Apostila de Arquitetura de Computadores Prof Bruno
ALU
B
R
A
S1 S2 D
IR
seo de controle seo de processamento
unidade de controle
R2
R3
R1
s1
s2
s3
s4
s5
s6
s7
s8

Figura 2.6. A seo de controle e a parte de processamento.
A ttulo de exemplo, vamos verificar como a execuo da instruo ADD
R1,R2,R3 direcionada pela unidade de controle. Para tanto, a seo de
processamento na figura acima foi representada com apenas os trs registradores
de dados envolvidos na execuo desta instruo. A execuo desta instruo
requer as seguintes operaes bsicas:
(1) transferncia do contedo do registrador de dados R1 para o registrador
temporrio A;
(2) transferncia do contedo do registrador de dados R2 para o registrador
temporrio B;
(3) adio dos dados armazenados nos registradores A e B e
armazenamento do resultado no registrador R;
(4) transferncia do contedo do registrador R para o registrador R3.
A seqncia de ativao do sinais de controle, com as operaes bsicas
correspondentes, apresentada na Figura 2.8.
14
Apostila de Arquitetura de Computadores Prof Bruno
operao bsica sinal de
controle
descrio da operao bsica
(1) (2) s1, s2


s3,s4
coloca o contedo de R1, R2 para os
barramentos
S1,S2, respectivamente.

armazena a informao presente nos
barramentos
S1, S2 em A,B, respectivamente.
(3) s5

s6
seleciona a operao de soma na ALU.

armazena o resultado produzido pela ALU em
R.
(4) s7

s8
coloca o contedo de R para o barramento D.

armazena a informao presente no barramento
D
em R3.
Figura 2.8. Ativao dos sinais de controle e operaes bsicas correspondentes.
Este um exemplo tpico de como a unidade de controle coordena a
execuo das operaes bsicas na seo de processamento. Para cada
registrador existem sinais que controlam a leitura e a escrita do registrador. Outros
sinais indicam ALU a operao aritmtica ou lgica que deve realizada. Para
qualquer outro componente na seo de processamento existem os sinais de
controle necessrios. Para executar uma operao bsica, a unidade de controle
simplesmente ativa os sinais apropriados na seqncia correta.
2.4 O Sinal de Clock
Pode-se observar pelo exemplo acima que a ordem na qual os sinais de
controle so ativados crtica. Alguns sinais devem obrigatoriamente preceder
outros (s3, por exemplo, no pode ser ativado antes de s1), enquanto que outros
sinais podem ser ativados simultaneamente (s1 e s2, por exemplo). Mais ainda,
para garantir um tempo suficiente para a transmisso da informao atravs dos
barramentos internos, em alguns casos deve ser observado um intervalo de tempo
mnimo entre a ativao de dois sinais.
15
Apostila de Arquitetura de Computadores Prof Bruno
Para atender as relaes de tempo requeridas na ativao dos sinais de
controle, a unidade de controle opera em sincronismo com um sinal de clock.
Como mostra a Figura 2.9, uma nova operao bsica executada no momento em
que inicia-se um novo ciclo de clock. Em muitos casos, vrias operaes bsicas
podem ser comandadas simultaneamente, dentro de um mesmo ciclo de clock.
1 ciclo
clock
leitura decodificao execuo resultado

Figura 2.9. A sincronizao da execuo de uma instruo com o sinal de clock.
A execuo de uma instruo consome um certo nmero de ciclos de clock.
O nmero de ciclos de clock por instruo no o mesmo para todas as instrues,
j que cada instruo pode envolver um nmero diferente de operaes bsicas em
cada passo de execuo.
O tamanho do ciclo de clock um dos fatores que determinam diretamente o
desempenho de um processador. Quanto menor o tamanho do ciclo de clock,
menor ser o tempo de execuo das instrues, e assim maior ser o nmero de
instrues executadas por unidade de tempo. Ao longo das dcadas de 70 e 80,
procurava-se diminuir o tamanho do ciclo de clock com o desenvolvimento de novas
tecnologias que permitissem velocidades de operao cada vez maiores. No
entanto, as tecnologias de integrao foram se aproximando dos limites impostos
pela prpria fsica, tornando esta evoluo mais lenta e elevando os custos.
Por este motivo, a reduo do ciclo de clock passou a ser considerada sob o
ponto de vista arquitetural. Atualmente, procura-se diminuir o ciclo de clock no
somente atravs de novas tecnologias, mas tambm atravs de simplificaes na
arquitetura, de modo que a arquitetura possa ser implementada atravs de circuitos
mais simples e inerentemente mais rpidos. Esta relao entre a complexidade
funcional da arquitetura e o tamanho do ciclo de clock ser discutida em maiores
detalhes na discusso sobre arquiteturas RISC, no Captulo 7.
2.5 Implementao da Unidade de Controle
Existem basicamente duas maneiras de implementar uma unidade de
controle. A primeira delas usando lgica aleatria (o termo original hardwired
control). A outra forma usando microprogramao. A Figura 2.10 mostra a
estrutura tpica de uma unidade de controle implementada com lgica aleatria.
16
Apostila de Arquitetura de Computadores Prof Bruno
Circuito Lgico
Registrador
de Instruo
Seo de Controle
.
.
.
Seo de
Processamento
clock

Figura 2.10. Organizao de uma unidade de controle implementada com lgica aleatria.
Na implementao por lgica aleatria, a unidade de controle formada por
um nico circuito lgico, cuja entrada o cdigo de instruo armazenado em IR e
cujas sadas so os prprios sinais de controle que comandam as operaes
bsicas na seo de processamento. De acordo com o cdigo da instruo, a cada
ciclo de clock este circuito ativa os sinais de controle que comandam as operaes
bsicas que devem ser realizadas naquele ciclo.
A desvantagem desta forma de implementao que a complexidade do
circuito de controle, em termos do nmero de dispositivos lgicos, aumenta
rapidamente com o nmero de instrues oferecidas pela arquitetura e com o
nmero de operaes bsicas que devem ser realizadas na execuo de uma
instruo. Em arquiteturas com instrues funcionalmente complexas, o projeto de
uma unidade de controle com lgica aleatria torna-se muito difcil e propenso a
erros.
A tcnica de microprogramao corrige esta desvantagem da implementao
com lgica aleatria. Nela, cada instruo oferecida pela arquitetura, que passa a
ser chamada de macroinstruo, na realidade executada por uma seqncia de
instrues primitivas, extremamente simples, chamadas microinstrues. Os
prprios bits das microinstrues so usados para ativar e desativar os sinais de
controle que comandam as operaes bsicas. A seqncia de microinstrues que
executa uma macroinstruo formam uma microrotina. Usando de uma
interpretao mais simples, podemos considerar que a execuo de uma
macroinstruo consiste na chamada de uma microrotina, feita pela unidade de
controle. As microinstrues da microrotina executam as operaes bsicas
associadas macroinstruo.
A Figura 2.11 mostra a estrutura de uma unidade de controle implementada
com a tcnica de microprogramao.
17
Apostila de Arquitetura de Computadores Prof Bruno
Registrador de Macroinstruo
Memria de
Microprograma
Seqenciador
Registrador de Microinstruo
.
.
.
Sinais de
Controle
clock

Figura 2.11. Organizao de uma unidade de controle microprogramada.
As microrotinas encontram-se armazenadas na memria de microprograma.
Quando o cdigo da macroinstruo armazenado no registrador de
(macro)instruo, o seqenciador interpreta este cdigo e determina o endereo de
entrada da microrotina que executa aquela macroinstruo. O seqenciador
fornece, a cada ciclo de clock, o endereo da prxima microinstruo a ser
executada. Aps o acesso microinstruo, ela armazenada no registrador de
microinstruo. Alguns bits da microinstruo so usados diretamente para
comandar os sinais de controle para a seo de processamento. Outros bits so
utilizados pelo seqenciador para determinar a prxima microinstruo a ser
executada.
A execuo de uma microinstruo envolve o acesso da microinstruo na
memria de microprograma, o armazenamento no registrador de microinstruo e a
realizao das operaes bsicas comandadas pelos bits da microinstruo. Uma
nova microinstruo executada a cada ciclo de clock. Quando a execuo de uma
microrotina concluda, uma nova macroinstruo acessada na memria principal
e armazenada no registrador de instruo, e iniciada a execuo de uma nova
microrotina.
A vantagem da microprogramao est no fato que a implementao das
instrues reduz-se basicamente escrita das microrotinas que sero gravadas na
memria de microprograma. Esta vantagem se torna especialmente significativa
quando a arquitetura oferece um grande nmero de instrues e estas instrues
so complexas, ou seja, a sua execuo envolve um grande nmero de operaes
bsicas. Neste caso, o projeto de um complicado circuito lgico, como aconteceria
na implementao com lgica aleatria, substitudo pela escrita das microrotinas,
uma tarefa comparativamente bem mais simples.
18
Apostila de Arquitetura de Computadores Prof Bruno
3 O CONJUNTO DE INSTRUES DO PROCESSADOR
O conjunto de instrues um dos pontos centrais na arquitetura de um
processador. Vrios aspectos na definio e implementao da arquitetura so
influenciados pelas caractersticas do conjunto de instrues. Por exemplo, as
operaes realizadas pela unidade lgica e aritmtica, o nmero e funo dos
registradores e a estrutura de interconexo dos componentes da seo de
processamento so influenciadas pelo conjunto de instrues. Alm disso, como
fica claro a partir do captulo anterior, as operaes bsicas que acontecem dentro
da seo de processamento dependem das instrues que devem ser executadas.
O conjunto de instrues afeta no somente o projeto da seo de processamento:
a estrutura e a complexidade da unidade de controle determinada diretamente
pelas caractersticas do conjunto de instrues.
Este captulo discute as principais aspectos de um conjunto de instrues,
como tipos de operaes, operandos, e modos de endereamento. Um exemplo
real de conjunto de instrues ser apresentado no prximo captulo, na discusso
da famlia Intel 80x86.
3.1 Conjunto de Instrues no Contexto de Software
A Figura 3.1 situa o conjunto de instrues do processador dentro dos
diversos nveis de software existentes em um sistema de computao.
Programa em Linguagem
de Alto Nvel
Programa em
Linguagem Assembly
Comandos de Alto Nvel
Instrues da Arquitetura
Compilador
Assembler
Linker/Loader
Programa Executvel

Figura 3.1. O conjunto de instrues dentro do contexto de software.

19
Apostila de Arquitetura de Computadores Prof Bruno
Em geral, os programas so desenvolvidos em uma linguagem de alto nvel
como FORTRAN, Pascal ou C. O compilador traduz o programa de alto nvel em
uma seqncia de instrues de processador. O resultado desta traduo o
programa em linguagem de montagem (assembly language). A linguagem de
montagem uma forma de representar textualmente as instrues oferecidas pela
arquitetura. Cada arquitetura possui uma particular linguagem de montagem. No
programa em linguagem de montagem, as instrues so representadas atravs de
mnemnicos, que associam o nome da instruo sua funo, como por exemplo,
ADD ou SUB.
O programa em linguagem de montagem convertido para um programa em
cdigo objeto pelo montador (assembler). O montador traduz diretamente uma
instruo da forma textual para a forma de cdigo binrio. sob a forma binria que
a instruo carregada na memria e interpretada pelo processador.
Programas complexos so normalmente estruturados em mdulos. Cada
mdulo separadamente compilado e submetido ao montador, gerando diversos
mdulos em cdigo objeto. Estes mdulos so reunidos pelo ligador (linker),
resultando finalmente no programa executvel que carregado na memria.
O conjunto de instrues de uma arquitetura se distingue atravs de diversas
caractersticas. As principais caractersticas de um conjunto de instrues so: tipos
de instrues e operandos, nmero e localizao dos operandos em instrues
aritmticas e lgicas, modos de endereamento para acesso a dados na memria,
e o formato dos cdigos de instruo. Estes aspectos so analisados a seguir.
3.2 Tipos de Instrues e de Operandos
As instrues oferecidas por uma arquitetura podem ser classificadas em
categorias, de acordo com o tipo de operao que realizam. Em geral, uma
arquitetura fornece pelo menos trs categorias de instrues bsicas:
instrues aritmticas e lgicas: so as instrues que realizam
operaes aritmticas sobre nmeros inteiros, tais como adio e
subtrao, e operaes lgicas bit-a-bit, tais como AND e OR;
instrues de movimentao de dados: instrues que transferem
dados entre os registradores ou entre os registradores e a memria
principal;
instrues de transferncia de controle: instrues de desvio e de
chamada de rotina, que transferem a execuo para uma determinada
instruo dentro do cdigo do programa.
Vrias arquiteturas oferecem outras categorias de instrues, voltadas para
operaes especializadas. Dentre estas, podemos citar:

20
Apostila de Arquitetura de Computadores Prof Bruno
instrues de ponto flutuante: instrues que realizam operaes
aritmticas sobre nmeros com ponto flutuante;
instrues decimais: instrues que realizam operaes aritmticas
sobre nmeros decimais codificados em binrio (BCD);
instrues de manipulao de bits: instrues para testar o valor de
um bit, ou para atribuir um valor a um bit;
instrues de manipulao de strings: instrues que realizam
operaes sobre cadeias de caracteres (strings), tais como
movimentao, comparao ou ainda procura de um caracter dentro
de um string.
Existem muitas diferenas entre as arquiteturas quanto s categorias de
instrues oferecidas. Arquiteturas de uso geral oferecem a maioria das categorias
acima relacionadas. Arquiteturas destinadas para uma aplicao especfica podem
oferecer outros tipos de instrues, especializadas para aquela aplicao. Um
exemplo seria uma arquitetura voltada para processamento grfico, que ofereceria
instrues para realizar operaes sobre pixels.
Os tipos de operandos que podem ser diretamente manipulados por uma
arquitetura depende, claro, dos tipos de instrues oferecidas. A Figura 3.2
mostra como os principais tipos de dados so normalmente representados em uma
arquitetura de uso geral.
A Figura 3.2(a) mostra a representao de inteiros, neste exemplo particular,
inteiros com 32 bits. Nmeros inteiros podem ser representados com ou sem sinal.
Em um nmero inteiro com sinal, o bit mais significativo reservado para indicar o
estado do sinal (positivo, negativo). Nmeros inteiros sem sinal assumem apenas
valores positivos. Algumas arquiteturas oferecem instrues especficas para
aritmtica com ou sem sinal. Estas instrues diferem no modo como so alterados
os bits do registrador de estado associado ALU. Algumas linguagens de
programao tornam visvel para o programador esta distino entre inteiros com ou
sem sinal. Na linguagem C por exemplo, uma varivel declarada do tipo int
representada por um inteiro com sinal. Ao contrrio, variveis do tipo unsigned
int so representadas por inteiros sem sinal, sendo normalmente usadas para
indexar elementos de vetores.
A Figura 3.2(b) mostra a representao de nmeros com ponto flutuante,
com preciso simples e dupla. A diferena entre precises est no nmero de bits
usados para representar a mantissa e o expoente. Atualmente, a maioria da
arquiteturas que operam nmeros com ponto flutuante obedecem a um padro,
denominado IEEE 754, que define a representao e um conjunto de operaes
aritmticas e lgicas para nmeros com ponto flutuante.


21
Apostila de Arquitetura de Computadores Prof Bruno
(unsigned integer)
inteiro sem sinal
inteiro com sinal
(signed integer)
0 31
0 31
s

(a)
ponto flutuante preciso simples
ponto flutuante preciso dupla
0
0
22
31
e
63 51
e m
m s
s

(b)
0 7
d1 d2
BCD empacotado
(packed BCD)

(c)
0 7
c1 c2 cn . . .
cadeia de caracteres

(d)
Figura 3.2. Representao dos tipos de operandos mais comuns.
A Figura 3.2(c) mostra a representao de nmeros BCD empacotados
(packed BCD). Nesta representao, dois dgitos decimais codificados em binrio
so representados dentro de um byte, cada dgito sendo codificado em quatro bits
do byte. Finalmente, a Figura 3.2(d) mostra a representao de cadeias de
caracteres, onde cada byte dentro de uma seqncia de bytes codifica um caracter
segundo um certo padro (p. ex. o padro ASCII).
3.3 Nmero e Localizao dos Operandos
Uma outra caracterstica de um conjunto de instrues o nmero de
operandos explicitamente indicados em uma instruo aritmtica ou lgica. Em
algumas arquiteturas, estas instrues referenciam explicitamente trs operandos,
dois operandos-fonte e um operando-destino, como por exemplo em:
ADD R1, R2, R3
onde R1 e R2 so os operandos-fonte e R3 o operando-destino. Em outras
arquiteturas, instrues aritmticas/lgicas especificam apenas dois operandos;
neste caso, um dos operandos-fonte tambm o operando-destino. Por exemplo,
na instruo ADD R1, R2
22
Apostila de Arquitetura de Computadores Prof Bruno
R2 contm um dos operandos-fonte e tambm usado como operando-
destino.
Quanto localizao dos operandos especificados por uma instruo
aritmtica/lgica, podemos encontrar arquiteturas onde podem ser realizados
acessos aos operandos diretamente a partir da memria principal. Por exemplo,
nestas arquiteturas podemos ter instrues tais como:
ADD M1,R1,R2
ADD M1,M2,R1
ADD M1,M2,M3
onde M1 e M2 e M3 so endereos de locaes de memria. Em um outro
extremo, existem arquiteturas onde todos os operandos encontram-se apenas em
registradores. As instrues aritmticas/lgicas so todas do tipo:
ADD R1,R2,R3
ADD R1,R2
A partir do nmero de operandos explicitamente referenciados e da
localizao destes operandos, podemos classificar as arquiteturas nos seguintes
tipos:
arquiteturas memria-memria: as instrues aritmticas/lgicas usam
trs operandos e todos os operandos podem estar na memria;
arquiteturas registrador-memria: as instrues aritmticas/lgicas
usam dois operandos, sendo que apenas um deles pode residir na
memria.
arquiteturas registrador-registrador: as instrues aritmticas/lgicas
usam trs operandos, todos em registradores. Neste caso, apenas
duas instrues acessam diretamente a memria: uma instruo
LOAD, que carrega em um registrador um dado armazenado na
memria e uma instruo STORE, que armazena na memria o
contedo de um registrador.
Arquiteturas memria-memria e registrador-memria apresentam como
vantagem um menor nmero de instrues no cdigo do programa, j que no
necessrio carregar previamente em registradores os operandos-fonte de uma
instruo aritmtica/lgica, como acontece em uma arquitetura registrador-
registrador. Por outro lado, a existncia de instrues aritmticas/lgicas mais
poderosas torna mais complexa a implementao da arquitetura. As arquiteturas
Intel 80x86 e Motorola MC680x0 so do tipo registrador-memria. Dentre as
arquiteturas memria-memria podemos citar o DEC VAX 11.
3.4 Modos de Endereamento
23
Apostila de Arquitetura de Computadores Prof Bruno
Os operandos de uma instruo podem encontrar-se em registradores, na
memria principal ou ainda embutidos na prpria instruo. O modo de
endereamento refere-se maneira como uma instruo especifica a localizao
dos seus operandos. Existem trs modos de endereamento bsicos:
modo registrador: neste modo, a instruo indica o nmero de um
registrador de dados onde se encontra um operando (fonte ou
destino).
modo imediato: neste modo, a instruo referencia um operando que
se encontra dentro do prprio cdigo da instruo;
modo implcito: neste modo, a localizao do operando no est
explicitamente indicada na instruo. Por exemplo, nas chamadas
arquiteturas acumulador, um dos operandos-fonte e o operando-
destino nas instrues aritmticas/lgicas encontra-se sempre em um
registrador especial, o acumulador. Assim, no necessrio que este
registrador seja explicitamente referenciado pela instruo.
A Figura 3.3 mostra exemplos de instrues que usam os modos de
endereamento implcito, registrador e imediato.
Modo Exemplo Significado
Implcito
ADD R1
Ac Ac + R1
Registrador
ADD R1,R2
R2 R1 + R2
Imediato
ADD R1,#4
R1 R1 + 4
Figura 3.3. Exemplos de uso dos modos de endereamento implcito, registrador e
imediato.
Os modos de endereamento acima referenciam apenas operandos que se
encontram em registradores ou na instruo. Existem ainda os modos de
endereamento usados para referenciar dados armazenados na memria principal.
Entre as diferentes arquiteturas, existe uma enorme variedade de modos de
endereamento referentes memria principal, e que formam, na realidade, uma
classe de modos de endereamento parte.
Um modo de endereamento referente memria indica como deve ser
obtido o endereo da locao de memria onde se encontra o dado que ser
acessado. Este endereo chamado endereo efetivo. Apesar da variedade acima
mencionada, possvel identificar alguns modos de endereamento referentes
memria que so oferecidos pela maioria das arquiteturas. Estes modos de
endereamento mais comuns esto relacionados na Figura 3.4.
Modo Exemplo Significado Uso
24
Apostila de Arquitetura de Computadores Prof Bruno
Direto
ADD (100),R1
R1 M[100] + R1 acesso a variveis estticas
Indireto
ADD (R1),R2
R2 M[R1] + R2 acesso via ponteiros
Relativo
base
ADD 100(R1),R2
R2 M[100+R1] + R2 acesso a elementos em
estruturas
Indexado
ADD (R1+R2),R3
R3 M[R1+R2] + R3 acesso a elementos em um
vetor
Figura 3.4. Modos de endereamento memria mais comuns.
No modo direto, o endereo efetivo um valor imediato contido no cdigo da
instruo. Por exemplo, na instruo ADD (100),R1, um dos operandos encontra-
se na locao de memria com endereo 100. O modo de endereamento direto
usado principalmente no acesso s variveis estticas de um programa, cujo
endereo em memria pode ser determinado durante a compilao do programa.
No modo indireto, o endereo efetivo encontra-se em um registrador. Por
exemplo, na instruo ADD (R1),R2, um dos operandos encontra-se na locao
de memria cujo endereo est no registrador R1. Ou seja, o operando na memria
indicado indiretamente, atravs de um registrador que contm o endereo efetivo.
Este modo de endereamento usado no acesso a variveis dinmicas, cujo
endereo na memria conhecido apenas durante a execuo do programa. O
acesso a uma varivel dinmica realizado atravs de um ponteiro, que nada mais
do que o endereo da varivel. Para realizar o acesso varivel dinmica, o
ponteiro carregado em um registrador, e a instruo que acessa a varivel usa
este registrador com o modo de endereamento indireto.
No modo relativo base, o endereo efetivo a soma do contedo de um
registrador, chamado endereo-base, com um valor imediato contido na instruo,
chamado deslocamento. Por exemplo, na instruo ADD 100(R1),R2, R1 contm
o endereo-base e 100 o deslocamento. O endereo efetivo do operando em
memria a soma do contedo de R1 com o valor 100. O modo relativo base
usado no acesso a componentes de variveis dinmicas estruturadas (por exemplo,
record em Pascal ou struct em C). A Figura 3.5 mostra como isto feito.
A
B
C
D
~
~
~
~
~
~
~
~
R1
+
2
ponteiro
endereo C = (ponteiro + 2)

25
Apostila de Arquitetura de Computadores Prof Bruno
Figura 3.5. Acesso a estruturas dinmicas com o modo de endereamento relativo base.
A figura mostra a localizao na memria de uma estrutura com quatro
campos A, B, C, D. O endereo inicial da estrutura indicado por um ponteiro, que
torna-se conhecido apenas durante a execuo do programa. No entanto, a posio
de cada campo em relao ao incio da estrutura fixo, sendo conhecido durante a
compilao. O endereo de um campo obtido somando-se a posio do campo (o
deslocamento) ao ponteiro que indica o incio da estrutura (o endereo-base). Por
exemplo, na figura acima, para somar um valor ao campo C, o compilador pode
usar a instruo ADD 2(R1),R2, precedida de uma instruo para carregar em R1
o endereo-base da estrutura.
No modo indexado, o endereo efetivo dado pela soma de um ndice com
um endereo-base, ambos armazenados em registradores. Por exemplo, na
instruo ADD (R1+R2),R3, R1 contm o endereo-base, e R2 o ndice. O modo
indexado normalmente usado no acesso aos elementos de um vetor, como
mostra a Figura 3.6.
~
~
ponteiro
v[0]
v[1]
.
.
.
v[10]
~
~
ponteiro + 1
ponteiro + 10
~
~
~
~
R1 R2=0 +
R1 R2=10 +
.
.
.

Figura 3.6. Acesso aos elementos de um vetor com o modo de endereamento indexado.

A figura representa a localizao na memria de um vetor V. Um ponteiro
indica o endereo-base do vetor, onde se encontra o primeiro elemento. O
endereo de cada elemento obtido somando o ndice do elemento ao endereo-
base. Para realizar o acesso seqencialmente os elementos do vetor, o ndice
inicialmente carregado no registrador com o valor 0. O ndice ento incrementado
dentro de um loop aps o acesso a cada elemento. Por exemplo, para somar um
valor em registrador aos elementos do vetor, o compilador pode usar as seguintes
instrues em um loop:
ADD R1,(R2+R3)
ADD 1,R3
26
Apostila de Arquitetura de Computadores Prof Bruno
onde R1 contm o valor a ser somado, R2 contm o ponteiro para o vetor e
R3 o registrador com o ndice, com valor inicial 0.
3.5 Formatos de Instruo
Como mencionado no incio deste captulo, as instrues de um programa
compilado so armazenadas na memria sob a forma de um cdigo em binrio, ou
cdigo de instruo. Um cdigo de instruo logicamente formado por campos de
bits, que contm as informaes necessrias execuo da instruo. Estes
campos de bits indicam, por exemplo, qual a operao a ser realizada e quais os
operandos a serem usados. A Figura 3.7 mostra um exemplo de cdigo de
instruo com seus campos de bits.
01011100 00010 00001 00011
codop opf1 opf2 opdst

Figura 3.7. Cdigo de instruo e seus campos de bits.
Neste cdigo de instruo, o campo codop contm o cdigo da operao a
ser realizada, enquanto os campos opf1, opf2 e opdst indicam os operandos fonte e
destino, respectivamente. Suponha que o cdigo 01011100 no campo codop
indique uma operao de adio, e que os valores 00001, 00010 e 00011 nos
campos opf1, opf2 e opdst indiquem os registradores R1, R2 e R3,
respectivamente. Assim, este cdigo de instruo a representao binria da
instruo ADD R1,R2,R3.
O formato de instruo refere-se a caractersticas do cdigo de instruo tais
como tamanho do cdigo, tipos de campos de bits e localizao dos campos de bits
dentro do cdigo. Uma arquitetura se caracteriza por apresentar instrues com
formato irregular ou com formato regular. No primeiro caso, as instrues podem
apresentar cdigos com tamanhos diferentes, e um certo campo de bits pode
ocupar posies diferentes nos cdigos onde aparece. Em uma arquitetura com
instrues regulares, todos os cdigos de instruo possuem o mesmo tamanho, e
um certo campo de bits sempre ocupa as mesma posio nos cdigos onde
aparece.
Arquiteturas com formatos de instruo irregular possibilitam programas com
menor tamanho de cdigo executvel. Isto acontece porque aqueles campos de bits
no necessrios uma instruo so eliminados, economizando espao de
armazenamento na memria.
Por outro lado, arquiteturas com formatos de instruo regular apresentam
uma grande vantagem quanto simplicidade no acesso s instrues. Se todas as
instrues possuem um tamanho de n bits, basta que o processador realize um
nico acesso de n bits memria principal para obter uma instruo completa.
Considere agora um processador com cdigos de instruo com tamanho varivel.
Neste caso, o processador no sabe, a priori, quanto bits deve buscar para obter
uma instruo completa. Aps realizar um acesso, torna-se necessrio que o
27
Apostila de Arquitetura de Computadores Prof Bruno
processador interprete parcialmente o cdigo da instruo para determinar se deve
realizar um outro acesso memria para completar a busca da instruo. A
decodificao parcial e o acesso adicional podem comprometer o desempenho ao
aumentar o tempo de execuo da instruo.
A segunda vantagem de instrues regulares a simplicidade na
decodificao das instrues. Em instrues regulares, um certo campo de bits
sempre ocupa a mesma posio. Isto permite, por exemplo, que os operandos da
instruo sejam acessados ao mesmo tempo que o cdigo de operao
interpretado, j que o processador sabe antecipadamente onde encontrar as
informaes sobre os operandos. Em instrues irregulares, os campos que
indicam os operandos podem aparecer em qualquer posio dentro do cdigo da
instruo. Assim, necessrio antes interpretar o cdigo de operao, para
determinar as posies dos campos de operando dentro daquele particular cdigo
de instruo. Agora, a decodificao e o acesso aos operandos so realizados
seqencialmente, o que contribui para aumentar o tempo de execuo das
instrues.
28
Apostila de Arquitetura de Computadores Prof Bruno
4 A ARQUITETURA DOS PROCESSADORES INTEL 80X86
Os Captulos 2 e 3 discutiram os conceitos bsicos relacionados arquitetura
de um processador. Este captulo ilustra estes conceitos atravs de exemplos de
processadores reais. Os processadores selecionados para os exemplos fazem
parte da famlia Intel 80x86. Esta escolha deve-se ao fato destes serem os
processadores usados nos microcomputadores pessoais do tipo IBM PC.
O objetivo deste captulo dar uma viso geral da arquiteturas destes
processadores com base nos conceitos vistos at agora. Conceitos avanados, tais
como memrias cache, memria virtual e pipelining, incorporados nos
processadores da linha 80x86, sero discutidos em captulos posteriores. O mais
recente lanamento da Intel, o processador Pentium, ser analisado no captulo que
discute arquiteturas de processadores super-escalares.
4.1 Quadro Evolutivo da Famlia Intel 80x86
O primeiro microprocessador Intel foi o Intel4004, produzido em 1969. Este
processador era um dispositivo de 4 bits que continha uma ALU, uma unidade de
controle e alguns registradores. O Intel 4004 foi rapidamente substitudo pelo Intel
8008. O 8008 era um processador de 8 bits com caractersticas similares s do
4004. Em 1979, a Intel produziu o seu primeiro processador de 16 bits, o 8086. Um
processador similar a este, o 8088, foi usado no primeiro IBM PC. A diferena entre
eles era o barramento de dados com 8 bits no 8088 e 16 bits no 8086. O sucessor
deste processador foi o Intel 80286, tambm com 16 bits. Em 1986, surgiu o
primeiro processador de 32 bits, o Intel 80386. O Intel 80386 foi substitudo, em
1989, pelo Intel 80486, um processador com arquitetura de 32 bits. Em 1993, surgiu
o processador Pentium, com caractersticas distintas dos processadores anteriores
e uma arquitetura de 64 bits. Nesta linha, os prximos processadores de 64 bits
foram o Pentium Pro, o PentiumII e o PentiumIII.
Desde o lanamento do processador 8086, em 1978, a famlia Intel 80x86
passou por cinco geraes, lanando no mercado um novo processador
aproximadamente a cada quatro anos. A Tabela 4.1 mostra a evoluo da linha
80x86.
Arquitetura Introduo Nmero Transistores
8086/8088 Junho 1978 29.000
80286 Fevereiro 1982 134.000
80386 Outubro 1985 275.000
80486 Agosto 1989 1.200.000
Pentium Maro 1993 3.100.000
29
Apostila de Arquitetura de Computadores Prof Bruno
Pentium Pro
(150 200 MHZ)
Novembro 1995 5.500.000
Pentium II
(350 400 MHZ)
Abril 1998 7.500.000
Tabela 4.1. Evoluo da famlia Intel 80x86.
Cada processador da famlia pode possuir mais de uma verso, que diferem
entre si apenas na tecnologia de integrao. Em geral, a ltima verso de um
processador apresenta um ganho no desempenho maior que o dobro da sua verso
original. Por sua vez, o desempenho de cada nova gerao se aproxima do dobro
do desempenho da ltima verso da gerao anterior.
A produo em larga escala garantiu uma queda significativa no custo.
Observe tambm que o nmero de transistores usados na implementao dos
processadores cresceu exponencialmente desde o lanamento do 8086, que
contava com 29.000 transistores. Durante este perodo, o rpido desenvolvimento
na tecnologia de integrao possibilitou que o nmero de transistores ultrapassasse
7 milhes na poca do lanamento do Pentium II.
4.2 O Intel 8086/8088
O 8086 foi lanado procurando atender s necessidades de aplicaes que
exigiam processamento de 16 bits, maior capacidade de memria, modos de
endereamento mais sofisticados que facilitassem a execuo de programas
escritos em linguagens de alto nvel e suporte para sistemas operacionais
multiprogramados. A arquitetura do 8086 mostrada na Figura 4.1.

ALU
FLAGS
AH AL
BH BL
CH CL
DH DL
AX
BX
DX
CX
SP
BP
SI
DI
CS
DS
SS
ES
IP
Execution Unit (EU) Bus Interface Unit (BIU)
EU Control
Unit
Bus Control
Data
Registers
Segment
Registers
Instruction Queue
Address
Data
Control

30
Apostila de Arquitetura de Computadores Prof Bruno
Figura 4.1. Arquitetura do Intel 8086.
O Intel 8088 possui a mesma organizao do 8086. As nicas diferenas
entre estes dois processadores esto no tamanho da fila de instrues e na largura
do barramento de dados. No 8086, a fila de instrues de 8 bytes e o barramento
de dados possui uma largura de 16 bits, enquanto no 8088 a fila de instrues e o
barramento de dados so de 4 bytes e 8 bits, respectivamente. O barramento de 8
bits no 8088 foi adotado para manter uma compatibilidade com as interfaces de
entrada/sada de 8 bits, existentes na poca. Dada a semelhana das duas
arquiteturas, a partir de agora se far referncia apenas ao 8086.
A arquitetura do 8086 composta de duas unidades principais. A unidade de
execuo, ou EU (Execution Unit) engloba a unidade lgica e aritmtica e a unidade
de controle. A unidade de interface de barramento, BIU (Bus Interface Unit)
responsvel por controlar os acessos externos memria principal e aos
dispositivos de entrada/sada. Se durante sua execuo uma instruo requer um
acesso a um dado armazenado na memria, a EU solicita o acesso BIU. As
principais caractersticas destas duas unidades so descritas a seguir.
4.2.1 A Unidade de Execuo
A unidade aritmtica e lgica opera sobre dados de 8 ou 16 bits. Associado
ALU existe um conjunto de 4 registradores de dados de uso geral, denominados
AX, BX, CX e DX. Cada um destes registradores de 16 bits formado por uma
metade inferior (AL, BL, CL, DL) e por uma metade superior (AH, BH, CH, DH),
onde podem ser realizados acessos individualmente, constituindo cada metade um
registrador de 8 bits. Esta organizao dos registradores no 8086 foi adotada para
manter a compatibilidade com programas desenvolvidos para o Intel 8080/8085,
que possua apenas registradores de 8 bits.
O registrador AX serve como acumulador em instrues aritmticas e lgicas.
O registrador BX usado por algumas instrues para armazenar ponteiros para
dados armazenados na memria. CX usado em algumas instrues especiais,
como a de controle de loop. O registrador DX utilizado como uma extenso do
registrador AX em instrues de diviso e multiplicao, sendo nele armazenada a
metade superior de um produto de 32 bits ou de um dividendo de 32 bits.
Alm dos registradores de uso geral, existem os registradores indexadores e
os registradores apontadores. Os registradores indexadores SI (Source Index) e DI
(Destination Index) so utilizados em operaes envolvendo cadeias de caracteres
(strings). Os registradores SP (Stack Pointer) e BP (Base Pointer) so normalmente
usados para acessar a pilha em chamadas e retornos de rotinas
2
. O registrador SP
aponta para o topo da pilha, enquanto o registrador BP aponta para a rea de
dados locais (na pilha) da rotina em execuo.

2
Pilha uma estrutura de dados em que o ltimo dado armazenado o primeiro a ser
recuperado.
31
Apostila de Arquitetura de Computadores Prof Bruno
O registrador de estado (flags) associado ALU inclui bits para registrar
informaes sobre o resultado de uma operao aritmtica e lgica e ainda alguns
bits de controle.
4.2.2 A Unidade de Interface de Barramento (BIU)
Todos os acessos memria e s interfaces de e/s so controlados pela
BIU. O 8086 possui um barramento de endereos de 20 bits, comportando assim
uma memria principal com tamanho mximo de 1 Mbyte.
Sob o ponto de vista do 8086, a memria principal apresenta uma
organizao especial, chamada segmentao. Nesta organizao, a memria
logicamente dividida em blocos, chamados segmentos, conforme mostra a Figura
4.2(a). Cada segmento possui um endereo-base, que o endereo onde inicia-se
o segmento. Uma locao de memria referenciada pelo programa atravs de seu
deslocamento (offset), que indica a posio da locao relativa ao incio do
segmento. Com o endereo-base do segmento e o deslocamento da locao dentro
do segmento, o hardware calcula o endereo da locao em relao ao incio da
memria.
A Figura 4.2(b) mostra como o clculo do endereo da locao feito no
caso do 8086. A BIU possui um conjunto de registradores de segmento, onde cada
registrador armazena os 16 bits mais significativos do endereo-base do segmento.
A cada acesso, este valor concatenado esquerda com quatro bits 0, formando
um endereo de 20 bits. A este endereo somado o deslocamento, resultando no
endereo da locao. O deslocamento um valor de 16 bits, o que significa que os
segmentos podem ter um tamanho mximo de 64 Kbytes. Para efetuar o clculo do
endereo, a BIU possui um somador dedicado.
Registrador de Segmento
Somador
endereo-base
Endereo Locao (20 bits)
0000
Deslocamento
endereo-base
deslocamento
segmento
memria principal
(a)
(b)
Figura 4.2. O mecanismo de segmentao.
No caso do 8086, um programa residente na memria possui quatro
segmentos. O segmento de cdigo que contm as instrues do programa. O
32
Apostila de Arquitetura de Computadores Prof Bruno
segmento de dados que corresponde rea de dados do programa. O segmento de
pilha que a rea que se destina pilha do programa. E o segmento extra, que
consiste de uma rea de dados adicional. Para cada um destes segmentos existe
um registrador de segmento na BIU que, como mencionado, armazena os 16 bits
mais significativos do endereo-base do segmento correspondente. Estes
registradores so denominados CS (Code Segment register), DS (Data Segment
register), SS (Stack Segment register) e ES (Extra Segment register).
Os quatro segmentos de um programa so referenciados de acordo com o
tipo de acesso memria. Buscas de instruo so feitas dentro do segmento de
cdigo indicado pelo valor corrente no registrador de segmento CS. Nos acessos
instrues, o deslocamento dado pelo contedo de um registrador especial da
BIU, denominado IP (Instruction Pointer). O IP indica a prxima instruo a ser
acessada na memria. Note que existe uma diferena entre IP e contador de
programa, definido no Captulo 2, j que este ltimo indica a prxima instruo a ser
executada. Esta diferena deve-se ao mecanismo de busca antecipada de
instrues existente no 8086, que ser descrito logo frente.
Acessos dados em memria acontecem dentro do segmento de dados
indicado pelo registrador DS. O deslocamento gerado pelo programa de acordo
com o modo de endereamento usado. Acessos a dados tambm podem acontecer
dentro do segmento extra, apontado pelo registrador ES, quando explicitamente
indicado pelo programa. Finalmente, acessos pilha ocorrem dentro do segmento
de pilha indicado pelo registrador SS.
Uma outra caracterstica do 8086 o mecanismo de busca antecipada de
instrues (instruction prefetch). Neste mecanismo, o passo de busca de instruo
desvinculado dos demais passos de execuo da instruo. Isto permite que
novas instrues sejam buscadas antecipadamente, enquanto uma instruo
anterior ainda est sendo executada. A Figura 4.3 compara a busca antecipada de
instrues com o modo de busca convencional.
B1 E1 B2 E2 B3 E3 B4 E4
(a)
tempo (ciclos)
B1 B2 B3 B4
E1 E2 E3 E4
(b)
tempo (ciclos)
B = busca
E = execuo

Figura 4.3. Busca convencional e busca antecipada de instrues.
A Figura 4.3(a) mostra um modo de acesso seqencial s instrues. Neste
caso, a busca de uma nova instruo inicia-se somente aps a instruo anterior ter
33
Apostila de Arquitetura de Computadores Prof Bruno
sido completada. A Figura 4.3(b) mostra como funciona a busca antecipada. Neste
modo, a busca e a execuo de uma instruo passam a ser atividades distintas.
Desta forma, o acesso de uma nova instruo pode ser iniciado antes mesmo que a
execuo da instruo anterior tenha sido completada. Por exemplo, na figura
acima, a busca da instruo 2 iniciada enquanto a instruo 1 ainda est sendo
executada. O mesmo acontece para as instrues seguintes.
Qual o efeito da busca antecipada de instrues? Considere o tempo de
concluso de uma instruo como sendo o intervalo de tempo entre o trmino de
uma instruo e o trmino da instruo seguinte. No modo convencional, como a
busca da instruo est acoplada execuo propriamente dita, o tempo de busca
soma-se ao tempo de execuo, aumentando o tempo de concluso. Por exemplo,
na Figura 4.3(a), v-se que dentro do tempo de concluso de cada instruo
sempre existe uma parcela fixa, de 3 ciclos, consumida na busca da instruo.
Na busca antecipada, a fase de busca e a fase de execuo so separadas,
e o tempo de busca da instruo seguinte mascarado pelo tempo de execuo
da instruo corrente. Assim, a contribuio do tempo de busca dentro do tempo de
concluso menor. Por exemplo, na Figura 4.3(b), o tempo de busca da instruo 2
totalmente mascarado pelo tempo de execuo da instruo 1. Neste caso, a
contribuio do tempo de busca efetivamente anulado. Em um outro exemplo,
dois ciclos do tempo de busca da instruo 3 so mascarados pelo tempo de
execuo da instruo 2. Agora, apenas um ciclo de busca aparece no tempo de
concluso da instruo 3.
Na busca antecipada de instrues, a BIU utiliza uma fila de instrues. Uma
instruo acessada antecipadamente permanece nesta fila at ser retirada pela EU.
A BIU procura manter a fila de instrues sempre cheia, realizando uma busca de
instruo sempre que no existe um pedido de acesso solicitado pela EU.
Note que em uma arquitetura sem busca antecipada, o contador de
programa indica a prxima instruo a ser executada, que exatamente a prxima
instruo a ser acessada. Em uma arquitetura com busca antecipada, a prxima
instruo a ser executada no necessariamente a prxima instruo a ser
acessada. No 8086, a prxima instruo a ser executada j foi trazida
anteriormente, e encontra-se na frente da fila de instrues. O registrador IP,
localizado na BIU, aponta para a prxima instruo a ser buscada.
A busca antecipada de instrues reduz o tempo mdio de concluso de
cada instruo. Como conseqncia, o tempo necessrio para executar um certo
nmero de instrues menor, o que significa um maior desempenho. Na
realidade, a busca antecipada de instrues uma forma limitada de paralelismo
empregada no 8086 para aumentar o desempenho. O uso de paralelismo a nvel de
execuo de instrues, em formas bem mais sofisticadas do que a existente no
8086, est se tornando comum em arquiteturas de processadores. Execuo
paralela de instrues, como na tcnica de pipelining e nas arquiteturas super-
escalares, sero discutidas no Captulo 7.
4.2.3 O Conjunto de Instrues do 8086
34
Apostila de Arquitetura de Computadores Prof Bruno
As instrues do 8086 podem ser classificadas nos seguintes grupos:
instrues aritmticas
instrues lgicas
instrues de manipulao de strings
instrues de transferncia de dados
instrues de transferncia de controle
A arquitetura do 8086 do tipo memria-registrador. Como visto no Captulo
3, neste tipo de arquitetura as instrues aritmticas e lgicas especificam
explicitamente dois operandos, sendo que um deles serve ao mesmo tempo como
operando-fonte e operando-destino. Apenas um dos operandos pode se encontrar
na memria. Estas instrues esto relacionadas na Tabela 4.2.
ADD
add
ADC
add with carry
INC
increment by 1
AAA
ASCII adjust for addition
DAA
decimal adjust for addition
SUB
subtract
SBB
subtract with borrow
DEC
decrement by 1
NEG
negate
CMP
compare
AAS
ASCII adjust for subtraction
DAS
decimal adjust for
subtraction
MUL
multiply byte
IMUL
integer multiply
AAM
ASCII adjust for multiply
DIV
divide
IDIV
integer divide
35
Apostila de Arquitetura de Computadores Prof Bruno
AAD
ASCII adjust for division
CBW
convert byte to word
CWD
convert word to doubleword
Tabela 4.2. Instrues aritmticas no 8086.
As instrues aritmticas operam sobre nmeros de 8 ou 16 bits, com ou
sem sinal. Existem instrues aritmticas que efetuam adio, subtrao,
multiplicao e diviso sobre inteiros representados em binrio e sobre inteiros
representados em BCD. Alm destas principais, existem vrias outras instrues.
Por exemplo, existem instrues para comparar dois inteiros, para incrementar ou
decrementar o contedo de registradores, para converter entre um nmero inteiro e
um caracter em representao ASCII e ainda para converter entre inteiros com
tamanhos diferentes.
As instrues lgicas esto relacionadas na Tabela 4.3. So oferecidas
instrues que realizam as operaes booleanas bsicas (complemento, and, or,
xor). Esto includas instrues que realizam deslocamentos aritmticos e lgicos
esquerda e direita, como tambm instrues para rotao do contedo de
registradores.

NOT
boolean not
AND
boolean and
OR
boolean or
XOR
boolean exclusive-or
TEST
boolean test
SHL
shift logical left
SAL
shift arithmetic left
SHR
shift logical right
SAR
shift arithmetic right
ROL
rotate left
ROR
rotate right
RCL
rotate through carry left
RCR
rotate through carry right
Tabela 4.3. Instrues lgicas no 8086.
36
Apostila de Arquitetura de Computadores Prof Bruno
As instrues de manipulao de strings, relacionadas na Tabela 4.4,
possibilitam vrios tipos de operaes sobre cadeias de caracteres. Estas
operaes so: movimentao de strings entre regies diferentes da memria,
comparao de dois strings, procura de um caracter dentro de um string e
transferncia de strings entre registradores e a memria. Na realidade, estas
operaes so executadas por instrues primitivas (MOVS, CMPS, SCAS, LODS,
STOS) que, em geral, so precedidas de um prefixo (REP, REPE/REPZ,
REPNE/REPNZ) que fazem a execuo da instruo primitiva ser repetida at que
uma condio indicada pelo prefixo seja satisfeita.
MOVS
move string
CMPS
compare string
SCAS
scan string
LODS
load string
STOS
store string
REP
repeat
REPE/REPZ
repeat while equal/zero
REPNE/REPNZ
repeat while not equal/not zero
Tabela 4.4. Instrues de manipulao de strings.
As instrues de transferncia de dados esto relacionadas na Tabela 4.5.
Basicamente, existem dois tipos de instrues de transferncia de dados, as de uso
geral e as especiais. As instrues de uso geral (MOV, PUSH, POP, XCHG, XLAT)
transferem dados entre registradores ou entre registradores e a memria. Nestas
esto includas as instrues de acesso pilha. Nas instrues de transferncia
especiais, esto instrues para carregar registradores de segmento,
salvar/carregar o registrador de estado e para realizar o acesso s interfaces de
entrada/sada.
MOV
move byte or word
PUSH
push word onto stack
POP
pop word off stack
XCHG
exchange byte or word
XLAT
translate byte
LEA
load effective address
LDS
load pointer using DS
37
Apostila de Arquitetura de Computadores Prof Bruno
LES
load pointer using ES
LAHF
load AH register from flags
SAHF
store AH register in flags
PUSHF
push flags onto stack
POPF
pop flags off stack
IN
input byte or word
OUT
output byte or word
Tabela 4.5. Instrues de transferncia de dados.
As instrues de transferncia de controle esto relacionadas na Tabela 4.6.
Nas instrues de transferncia condicional um desvio pode ou no ser executado,
dependendo se a condio testada pela instruo ou no verdadeira. Estas
instrues testam o valor de um bit do registrador de estado associado ALU e
realizam o desvio de acordo com o estado do bit. O bit(ou bits) a ser testado
indicado pela instruo. Nas instrues de transferncia incondicional o desvio
sempre efetuado. Nas instrues de transferncia incondicional esto as de
chamada/retorno de rotinas. Existem tambm as instrues de controle de loop.
Estas instrues aparecem normalmente no final do loop, e fazem com que uma
nova interao do loop seja executada enquanto uma certa condio for satisfeita.
Existe ainda uma instruo especial (INT), que provoca uma interrupo
(interrupes sero discutidas no Captulo 6). Esta instruo normalmente usada
para implementar chamadas ao sistema operacional.
JA
jump if above
CALL
call routine
JAE
jump if above or equal
RET
return from routine
JB
jump if below
JMP
jump unconditionally
JBE
jump if below or equal
LOOP
loop
JC
jump if carry
LOOPE/LOOPZ
loop if equal/zero
JE
jump if equal
LOOPNE/LOOPNZ
loop if not equal/not zero
JG
jump if greater
JCXZ
jump if CX=0
JGE
jump if greater or
equal
INT
interrupt
JL
jump if less
JLE
jump if less or equal
38
Apostila de Arquitetura de Computadores Prof Bruno
JNC
jump if not carry
JNE
jump if not equal
JNO
jump if not overflow
JNP
jump if not parity
JNS
jump if not sign
JO
jump if overflow
JP
jump if parity
JS
jump if sign
Tabela 4.6. Instrues de transferncia de controle.
O conjunto de instrues do 8086 oferece os seguintes modos de
endereamento: registrador, imediato, direto, indireto via registrador, relativo base,
indexado e relativo base indexado. Estes modos de endereamento j foram
discutidos genericamente no captulo anterior. No caso particular do 8086, os
registradores BX, BP, SI e DI so usados como base ou ndice nos modos de
endereamento relativo base e indexado. A Tabela 4.7 mostra as possibilidades
de clculo do endereo efetivo nestes modos de endereamento.
Modo Endereo Efetivo
Baseado BX + deslocamento
BP + deslocamento
Indexado SI + deslocamento
DI + deslocamento
Baseado Indexado BX + SI + deslocamento
BX + DI + deslocamento
BP + SI + deslocamento BP
+ DI + deslocamento
Tabela 4.7. Clculo do endereo efetivo nos modos relativo base/indexado.
4.3 O Intel 80186/80188
A arquitetura bsica do 80186 (80188) praticamente igual a do 8086
(8088). A diferena que estes processadores incorporaram no mesmo dispositivo
cerca de 15 a 20 dos componentes mais comuns dos sistemas baseados no
39
Apostila de Arquitetura de Computadores Prof Bruno
8086/8088, tais como controlador de interrupo e controlador de DMA (ver
Captulo 6). O cdigo objeto do 80186/80188 totalmente compatvel com o do
8086/8088. Devido s inmeras similaridades com o 8086/888, estes
processadores no sero aqui descritos.
4.4 O Intel 80286
As principais novidades introduzidas na arquitetura do 80286 foram a
execuo de instrues em pipeline e o suporte para memria virtual. A Figura 4.4
mostra a arquitetura do 80286.
A arquitetura do 80286 composta por unidades independentes que
realizam funes especficas. A unidade de barramento (bus unit) controla os
acessos memria e interfaces de e/s, e realiza a busca antecipada de instrues.
Instrues acessadas so colocadas em uma fila na unidade de barramento. A
unidade de instruo (instruction unit) decodifica as instrues, colocando as
instrues decodificadas em uma fila. A instruo decodificada fornece de maneira
mais detalhada todas as informaes necessrias execuo da instruo. Por
exemplo, a instruo decodificada indica explicitamente o endereo de entrada da
microrotina que executa a instruo.
Prefetch
Queue
Bus Unit
(BU)
Bus
Control
Address
Data
Control
Instruction
Decoder
Decoded
Instruction Queue
Instruction Unit (IU)
Control
Unit
Registers
ALU
Execution Unit
(EU)
Segment
Bases
Segment
Sizes
Segment
Limit
Checker
Address Unit (AU)
Physical
Address
Adder
Offset
Adder

Figura 4.4. Arquitetura do Intel 80286.
A unidade de controle, a ALU e o conjunto de registradores formam a
unidade de execuo (execution unit). Instrues decodificadas so retiradas da fila
onde se encontram pela unidade de controle. A ALU do 80286 de 16 bits, e o
conjunto de registradores idntico ao do 8086. A unidade de endereo (address
unit) responsvel por controlar a memria virtual. A memria virtual uma tcnica
que torna possvel a execuo eficiente de programas com tamanho de cdigo
maior que o tamanho da memria principal.
40
Apostila de Arquitetura de Computadores Prof Bruno
O 80286 pode operar em dois modos, chamados modo real (real mode) e
modo protegido (protected mode). No modo real, o 80286 opera com um modelo de
memria semelhante ao 8086, ou seja, uma memria segmentada com tamanho
mximo de 1 Mbyte. No modo protegido, o 80286 opera com memria virtual. Neste
modo, a memria do 80286 logicamente dividida em 16.384 segmentos, cada um
com 64 Kbytes de tamanho. Logo, pode-se executar programas com at 1 Gbyte de
tamanho, embora o tamanho mximo da memria principal seja 16 Mbytes
(barramento de endereo externo de 24 bits). Alm disso, este modo de operao
fornece um suporte mais eficiente para sistemas operacionais multiprogramados, j
que prov proteo entre segmentos pertencentes a diferentes programas (da a
denominao de protegido a este modo de operao). A tcnica de memria virtual
ser discutida em detalhes no prximo captulo.
Um ponto importante que estes dois modos de operao so estticos.
Quando o 80286 iniciado, ele comea a operar no modo real. A execuo de uma
instruo especial comuta a sua operao para o modo protegido. Uma vez neste
modo, o 80286 no mais pode voltar para o modo real sem uma reinicializao.
Tambm importante salientar que programas para o 8086 no podem ser
executados no modo protegido. Isto acontece porque, no modo protegido, os
registradores de segmento assumem funes diferentes daquelas no 8086. Como
ser visto, esta limitao corrigida no 80386.
As diversas unidades no 80286 operam simultaneamente, realizando tarefas
que fazem parte da execuo de diferentes instrues. Por exemplo, enquanto a
unidade de barramento est realizando o acesso ao operando de uma instruo, a
unidade de instruo est decodificando uma outra instruo e a unidade de
execuo est executando uma terceira instruo. Esta execuo paralela de
instrues em diferentes unidades conhecida como pipeline. Com pipelining
possvel obter aumentos significativos no desempenho, e por isso esta tcnica
atualmente usada em praticamente todas as arquiteturas de processador. A tcnica
de pipelining discutida no Captulo 7.
O conjunto de instrues do 80286 basicamente o mesmo do 8086. Foram
acrescentadas duas instrues, PUSHA e POPA, que realizam o
salvamento/recuperao dos registradores na pilha em memria. A instruo BOUND
verifica se um ndice de vetor encontra-se dentro dos limites. A instruo ENTER cria
uma rea para armazenamento de dados na pilha, sendo usada na implementao
de chamada de rotinas. A instruo LEAVE usada em retornos de rotinas, e libera
uma rea de dados na pilha. Existem tambm outras instrues relacionadas com o
controle da memria virtual. Os modos de endereamento so os mesmos do 8086.
A Tabela 4.8 resume as principais diferenas entre as arquiteturas 8086 e 80286.
8086 80286
modo real apenas modos real e protegido
1 Mbyte memria principal mxima 16 Mbytes memria principal mxima
41
Apostila de Arquitetura de Computadores Prof Bruno
fraco suporte para
multiprogramao
melhor suporte para multiprogramao,
com mecanismo de proteo entre
programas
execuo de instrues seqencial execuo de instrues em pipeline
Tabela 4.8. Principais diferenas entre o 8086 e o 80286.
4.5 A Arquitetura do Intel 80386
Existem duas verses da arquitetura 80386 denominadas SX e DX. A nica
diferena entre estas verso que, no 80386 SX, o barramento de dados externo
de 16 bits, enquanto no 80386 DX o barramento de dados de 32 bits. A Figura 4.5
mostra a organizao do Intel 80386.

Bus Control
Address
Data
Control
ALU
FLAGS
Registers
Prefetcher
Code Queue
Control Unit
Decoder
Decoded Queue
Adder
Descriptor
Registers
Adder
TLB
Segmentation Paging

Figura 4.5. Arquitetura do Intel 80386.
A arquitetura do 80386 formada por oito unidades lgicas. Assim como nas
arquiteturas 8086 e 80286, a unidade de barramento (bus interface unit)
responsvel por controlar os acessos externos memria e interfaces de e/s. Esta
unidade recebe pedidos de acesso memria de vrias outras unidades. A busca
antecipada de instrues feita pela unidade de pr-busca (prefetch unit). Esta
unidade possui uma fila de instrues (code queue) de 16 bytes, e solicita acessos
memria para a unidade de barramento sempre que esta fila se encontra
parcialmente vazia ou quando uma instruo de transferncia de controle
executada.
42
Apostila de Arquitetura de Computadores Prof Bruno
A unidade de decodificao (decode unit) responsvel por decodificar as
instrues. Esta unidade retira uma instruo da fila de instrues e gera uma
instruo decodificada que armazenada na fila de instrues decodificadas
(decoded queue). A unidade de controle retira instrues decodificadas desta fila
para serem executadas. Esta unidade controla todas as demais unidades que
participam na execuo da instruo.
A unidade de dados (data unit) formada por uma ALU e registradores de 32
bits. O conjunto de registradores do 80386 mostrado na Figura 4.6.

0 31
EAX
EBX
ECX
EDX
ESP
EBP
ESI
EDI
AX
BX
CX
DX
AH AL
BH BL
CH CL
DH DL
16 15

Figura 4.6. Conjunto de registradores do 80386.
O 80386 possui 4 registradores de dados de 32 bits, EAX, EBX, ECX e EDX.
Podem ser feitos acessos metade inferior de cada um destes registradores, como
registradores de 16 bits AX, BX, CX e DX. Por sua vez, cada um destes
registradores de 16 bits podem ser considerados como contendo dois registradores
de 8 bits. Com esta organizao, o 80386 mantm a compatibilidade com as
arquiteturas anteriores. Alm dos registradores de dados, existem os registradores
apontadores ESP e EBP e os registradores indexadores ESI e EDI. Nestes
registradores so acessados apenas como registradores de 32 bits.
As trs unidades restantes, protection unit, segmentation unit e paging unit
gerenciam a memria virtual. O 80386 implementa um modelo de memria virtual
organizada em segmentos e pginas. A unidade de proteo verifica se um
endereo se encontra dentro dos limites de um segmento, enquanto as unidades de
segmentao e paginao realizam a converso entre endereo virtual e endereo
real. O mecanismo de memria virtual do 80386 ser examinado em detalhes no
prximo captulo.
Alm dos modos real e protegido, existentes no 80286, o 80386 pode
tambm operar em um terceiro modo, chamado modo 8086 virtual (virtual 8086
mode). Neste modo, programas desenvolvidos para o 8086 podem ser executados
em um ambiente multiprogramado protegido, ou seja, em um ambiente onde
mltiplos programas podem ser executados simultaneamente, sem que um
programa interfira na execuo de um outro programa. Alm disso, ao contrrio do
43
Apostila de Arquitetura de Computadores Prof Bruno
que acontece entre os modos real e protegido no 80286, no 80386 possvel
comutar livremente do modo protegido para o modo virtual, e vice-versa. Isto o
que acontece, por exemplo, quando uma janela MS-DOS aberta a partir da
interface grfica MS Windows. Normalmente, o MS Windows opera no modo
protegido. Quando solicitada uma janela MS-DOS, o 80386 comutado para o
modo virtual, possibilitando que programas MS-DOS, escritos para o 8086, possam
ser executados.
A arquitetura 80386 oferece um longo conjunto de instrues, incluindo todas
as instrues das arquiteturas 8086 e 80286. Dentre as novas instrues
introduzidas na arquitetura 80386, destacam-se novas instrues lgicas para
deslocamento e teste de bits, para procura de caracteres em strings, e para
movimentao e converso de dados.
O 80386 oferece 11 modos de endereamento, incluindo todos os modos de
endereamento do 8086 e 80286. O 80386 adiciona um novo componente no
clculo do endereo efetivo, chamado escala (scale). A escala um fator (1, 2, 4 ou
8) que multiplica o ndice nos modos de endereamento indexados. Isto facilita o
acesso a vetores com elementos de 16, 32 ou 64 bits. Por exemplo, para percorrer
um vetor com elementos de 32 bits, so necessrios incrementos de 4 bytes no
endereo efetivo. Usando uma escala 4, cada incremento de 1 do ndice resulta,
aps a multiplicao do ndice pela escala, no incremento de 4 bytes no endereo
efetivo.
A Tabela 4.9 relaciona as principais diferenas entre o 80286 e o 80386.
80286 80386
modos real e protegido modos real, protegido e virtual
16 Mbytes de memria principal
mxima
4 Gbytes de memria principal
mxima
aritmtica de 8 e 16 bits aritmtica de 8, 16 e 32 bits
registradores de 16 bits registradores de 32 bits
Tabela 4.9. Principais diferenas entre o 80286 e o 80386.
4.6 A Arquitetura do Intel 80486
A arquitetura do 80486 basicamente uma extenso da arquitetura do
80386. No 80486, uma memria cache de 8 Kbytes e uma unidade de ponto
flutuante so acrescentados arquitetura do 80386. Em sistemas baseados no
80386, a memria cache e a unidade de ponto flutuante so externos ao
processador. A Figura 4.7 mostra a arquitetura do 80486.
44
Apostila de Arquitetura de Computadores Prof Bruno
Bus Control
Address
Data
Control
ALU
FLAGS
Registers
Adder
Descriptor
Registers
Adder
TLB
Segmentation Paging
Prefetcher
Code Queue Control Unit
Decoder
Decoded Queue
Cache
Floating-Point
Unit
Figura 4.7. Arquitetura do Intel 80486.
A arquitetura 80486 possui trs verses de implementao, denominadas
486-SX, 486-DX e 486-DX2. A verso 486-SX no possui a unidade de ponto
flutuante integrada com o processador, mas apenas a memria cache. A verso
486-DX possui unidade de ponto flutuante e memria cache integradas com o
processador. Na verso 486-DX, a freqncia de clock do processador a mesma
usada nos ciclos de barramento para acesso memria e interfaces de e/s. Na
verso 486-DX2, a freqncia de clock interna ao processador o dobro da
freqncia externa usada nos ciclos de barramento. Isto permite obter uma
compatibilidade entre novas verses mais rpidas do processador com um
hardware de sistema mais antigo e lento.
Devido total similaridade entre as arquiteturas 80386 e 80486, a descrio
da arquitetura 80486 seria uma repetio da seo anterior. No prximo captulo
sero descritos a memria cache e o mecanismo de memria virtual usados no
80486.
4.7 O Intel Pentium
O Pentium um dos membros mais recente da famlia 80x86. At o Pentium,
a principal inovao arquitetural na famlia 80x86 era a tcnica de pipeline,
introduzida com o Intel 80286. O Pentium introduz uma outra facilidade igualmente
importante para o desempenho, a execuo super-escalar de instrues.
Na arquitetura Pentium podemos destacar algumas verses de
implementao como o Pentium Pro, o Pentium II e o Pentium III. Na verso
Pentium Pro, o processador usa uma arquitetura de execuo dinmica. Neste
processador, diferentes unidades de execuo podem se agrupar no mesmo
pipeline; por exemplo, a ALU e a unidade de ponto flutuante podem compartilhar
45
Apostila de Arquitetura de Computadores Prof Bruno
um pipeline. A verso Pentium II, por sua vez, incorpora a tecnologia Intel MMX,
que uma extenso do conjunto de instrues da arquitetura Intel. Esta tecnologia
utiliza uma tcnica SIMD para aumentar a velocidade processando dados em
paralelo. A verso mais recente dos processadores Pentium o Pentium III. Este
processador caracteriza-se por possuir 70 instrues a mais que a verso anterior e
mais de 9 milhes de transistores.
Devido importncia atual do conceito de paralelismo no nvel de instrues,
a arquitetura do Intel Pentium descrita em outro captulo.

46
Apostila de Arquitetura de Computadores Prof Bruno
5 O SUB-SISTEMA DE MEMRIA
Os captulos anteriores discutiram conceitos a nvel de arquitetura de
processador. Com este conhecimento, podemos agora subir para o nvel superior, o
de arquitetura de computadores.
No Captulo 1, a Figura 1.1 mostra a organizao bsica de um computador,
incluindo o processador, a memria principal e as interfaces de entrada/sada,
interconectados por um barramento. Na realidade, a memria principal apenas um
dos componentes dentro do sub-sistema de memria de um computador.
Este captulo introduz os componentes normalmente encontrados no sub-
sistema de memria de um microcomputador ou de uma estao de trabalho.
Inicialmente, analisado em detalhe o mecanismo de acesso do processador
memria principal. Em seguida, so apresentados os principais tipos e
caractersticas de dispositivos de memria. Finalmente, so apresentados os
conceitos de memria cache e memria virtual. Como exemplos reais, descrita a
memria cache e o suporte para memria virtual no processador Intel 80486.
5.1 A Interao entre Processador e Memria Principal
O componente bsico da memria principal chamado clula de bit. A clula
de bit um circuito eletrnico que armazena um bit de informao. Em uma
referncia memria, o processador no realiza o acesso ao contedo de apenas
uma clula de bit, mas sim a informao armazenada em um grupo de clulas de
bits. O menor conjunto de clulas de bits que acessado pelo processador
chamado locao de memria. Na maioria dos computadores, uma locao de
memria formada por 8 clulas de bits. Como 8 bits formam o chamado byte, uma
locao de memria tambm conhecida informalmente como byte de memria.
Em um acesso, o processador deve fornecer memria principal uma
identificao da locao onde ser feito o acesso. Esta identificao
simplesmente um nmero, chamado endereo de memria. Ao receber um
endereo de memria, a memria principal seleciona a locao correspondente e
fornece ao processador a informao ali contida, no caso de um acesso de leitura.
No caso de um acesso de escrita, a memria principal armazena na locao
indicada pelo endereo a informao fornecida pelo processador.
A Figura 1.1 do Captulo 1 mostra o processador conectado memria
principal atravs de um barramento. Na realidade, o processador e a memria
principal esto interligados atravs de trs barramentos distintos, conforme mostra a
Figura 5.1.

47
Apostila de Arquitetura de Computadores Prof Bruno
Processador
Endereo
Dados
Controle
Sub-sistema de Memria
Memria
Principal

Figura 5.1. Interligao entre processador e memria principal.
O barramento de endereo a via atravs da qual o processador transmite
para a memria principal o endereo da locao onde ser feito o acesso. O
barramento de dados a via atravs da qual o contedo da locao transferida
entre o processador e a memria principal. Finalmente, o barramento de controle
formado por diversos sinais atravs dos quais o processador controla o acesso
memria, indicando, por exemplo, se o acesso de leitura ou de escrita
A largura, em nmero de bits, dos barramentos de endereo e de dados
varia entre computadores, sendo determinada basicamente pelo processador usado
no sistema. A Tabela 5.1 relaciona a largura dos barramentos de endereo e de
dados nos diversos modelos da linha de microcomputadores do tipo IBM PC.
Sistema Processador Barramento de
Endereo
Barramento de
Dados
IBM PC XT Intel 8088 20 bits 8 bits
IBM PC AT Intel 80286 24 bits 16 bits
IBM PC 386 Intel 80386 DX 32 bits 32 bits
IBM PC 486 Intel 80486 32 bits 32 bits
Tabela 5.1. Largura dos barramentos em microcomputadores do tipo IBM PC.
Um sistema com um barramento de endereo com largura de n bits pode
enderear at 2
n
locaes de memria distintas. No entanto, isto no significa
necessariamente que o sistema possui esta capacidade de memria principal
instalada. Por exemplo, um sistema baseado no processador 80386 ou 80486
poderia, a princpio, ter uma memria principal de at 2
32
= 4 Gbytes . No entanto,
em geral microcomputadores possuem no mximo 16 Mbytes de memria principal.
Alguns sistemas, como por exemplo estaes de trabalho e servidores, permitem
48
Apostila de Arquitetura de Computadores Prof Bruno
at 2 Gbytes de memria principal. A capacidade mxima de memria principal que
pode ser instalada em um sistema determinada pelo compromisso entre custo e
desempenho caracterstico do sistema. Ainda neste captulo ser discutido o
mecanismo de memria virtual, que permite a execuo de programas que usam
uma capacidade de memria maior do que a memria principal fisicamente
existente no sistema.
5.1.1 Ciclo de Barramento
Como discutido acima, um acesso memria envolve a seleo de uma
locao de memria, a ativao de sinais de controle e a troca de informaes entre
o processador e a memria principal. A seqncia de eventos que acontecem
durante um acesso do processador memria principal chamado de ciclo de
barramento (bus cycle), e ser agora descrito em maiores detalhes.
Para descrever um ciclo de barramento, conveniente usar uma
representao grfica chamada diagrama de tempo. O diagrama de tempo indica as
alteraes no estado dos barramentos durante um acesso memria. A Figura 5.3
mostra o diagrama de tempo do ciclo de barramento em um acesso de leitura na
memria principal.
Clock
Endereo
Dados
Controle
1
2
3
4

Figura 5.3. Ciclo de barramento em um acesso de leitura.
No diagrama acima, a representao indica que em um certo
momento o barramento mudou de estado, com alguns bits mudando de valor 0 para
1 ou vice-versa. A representao indica que o sinal mudou do estado
lgico 0 para o estado lgico 1, enquanto indica uma transio do sinal do
estado 1 para 0. Como indica o diagrama de tempo, as mudanas nos estados dos
barramentos esto sincronizados com o sinal de clock.
O processador inicia o ciclo de barramento colocando o endereo da locao
de memria a ser acessada no barramento de endereo (1). No incio do prximo
ciclo de clock o processador ativa um sinal de controle indicando uma operao de
leitura (2). O endereo e o sinal de controle chegam memria, que aps algum
tempo coloca o contedo da locao de memria endereada no barramento de
dados (3). No incio do quarto ciclo de clock, o processador captura a informao
presente no barramento de dados e finaliza o ciclo de barramento, desativando o
sinal de controle e retirando o endereo (4).
49
Apostila de Arquitetura de Computadores Prof Bruno
A Figura 5.4 mostra o diagrama de tempo do ciclo de barramento em um
acesso de escrita na memria. Novamente, o ciclo de barramento inicia-se com o
processador colocando o endereo da locao de memria no barramento de
endereo (1). Alm disso, o processador tambm coloca a informao a ser
armazenada no barramento de dados (2). No prximo ciclo de clock, o processador
ativa um sinal de controle indicando uma operao de escrita na memria (3). Ao
receber o sinal de escrita, a memria armazena o dado na locao endereada. O
processador finaliza o ciclo de barramento retirando o endereo e o dado dos
respectivos barramentos, e desativando o sinal de controle (4).
Clock
Endereo
1
Controle
2
Dados
4
3

Figura 5.4. Ciclo de barramento em um acesso de escrita.
Nos diagramas mostrados, o nmero de ciclos de clock que separam os
eventos ao longo de um ciclo de barramento so hipotticos. O nmero de ciclos de
clock consumidos no ciclo de barramento varia entre os processadores. No entanto,
a seqncia de eventos mostrada nos diagramas de fato ocorrem para a maioria
dos processadores.
5.1.2 Estados de Espera
A velocidade da memria principal medida pelo tempo de acesso dos
dispositivos de memria (circuitos integrados) usados em sua implementao. O
tempo de acesso o intervalo de tempo entre o instante em que a memria recebe
o endereo at o instante em que a memria fornece a informao endereada. Na
Figura 5.3 representado o caso onde o tempo de acesso da memria
equivalente a cerca de 3,5 ciclos de clock. Se o ciclo de clock , digamos, 20 ns (1
ns = 10
-9
s), ento o tempo de acesso da memria cerca de 70 ns. Atualmente, os
dispositivos de memria instalados na memria principal de sistemas tais como
microcomputadores e estaes de trabalho apresentam um tempo de acesso entre
60 ns e 80 ns.
Um ponto importante a observar quanto ao ciclo de barramento que o seu
tamanho, em termos do nmero de ciclos de clock, a princpio determinado pelo
processador. Caso no haja uma solicitao externa quanto ao tamanho apropriado
do ciclo de barramento, o processador sempre executar um ciclo de barramento
padro com um certo nmero de ciclos. Nos exemplos hipotticos das Figuras 5.3 e
5.4, o ciclo de barramento padro possui um tamanho de 4 ciclos de clock.
50
Apostila de Arquitetura de Computadores Prof Bruno
A questo que se coloca : o que acontece se o processador possui um ciclo
de barramento padro cujo tamanho menor que o tempo de acesso da memria
principal? O diagrama de tempo na Figura 5.5(a) representa esta situao.
Clock
Endereo
Controle
Dados invlido

(a)
Clock
Endereo
Controle
Dados invlido
estados de espera
vlido
(b)
Figura 5.5. Os estados de espera no ciclo de barramento.
Na Figura 5.5(a) est representado o caso onde o ciclo de barramento
padro continua com 4 ciclos de clock, mas agora o processador se encontra em
um sistema cuja memria principal possui um tempo de acesso de 6 ciclos de clock.
Ao final do ciclo de barramento, o processador captura uma informao no
barramento de dados que naquele momento invlida, j que a memria forneceria
a informao endereada apenas dois ciclos de clock depois. Nesta situao, o
sistema opera incorretamente.
Em geral, os processadores oferecem um mecanismo que permite
compatibilizar o tamanho do ciclo de barramento ao tempo de acesso da memria.
O processador possui um sinal de entrada que, ao ser ativado, faz com que o
tamanho do ciclo de barramento seja estendido pela introduo de ciclos de clock
extras. Estes ciclos de clock adicionais so denominados estados de espera.
A Figura 5.5(b) mostra um ciclo de barramento com estados de espera.
Quando a memria detecta o incio de um ciclo de barramento, a memria principal
envia um sinal solicitando ao processador que o ciclo de barramento seja estendido.
O processador no finaliza o ciclo de barramento enquanto est solicitao for
mantida. Ao colocar a informao endereada no barramento de dados, a memria
51
Apostila de Arquitetura de Computadores Prof Bruno
principal retira a solicitao de espera. O processador captura a informao, agora
vlida, presente no barramento de dados, e finaliza o ciclo de barramento. No
exemplo mostrado, foram introduzidos trs ciclos de espera.
Microcomputadores do tipo IBM PC oferecem este recurso dos estados de
espera. O nmero de estados de espera um dos parmetros de configurao do
sistema, e pode ser escolhido atravs da interface de configurao do sistema.
Note que o uso deste recurso afeta o desempenho do sistema, j que o tempo
consumido nos acessos memria torna-se maior. No entanto, as memrias cache,
que sero discutidas mais frente, atenuam em grande parte o efeito do aumento
do ciclo de barramento sobre o desempenho.
5.2 Tipos de Dispositivos de Memria
No sub-sistema de memria de um computador possvel encontrar trs
diferentes tipos de dispositivos de memria. O primeiro tipo a memria
programvel somente de leitura, mais conhecida como PROM (Programmable Read
Only Memory). Este tipo de dispositivo permite apenas acessos de leitura. As
informaes ali armazenadas so atribudas pelo fabricante do sistema, e no
podem ser modificadas aps o seu armazenamento.
O segundo tipo a memria programvel e apagvel somente de leitura, ou
simplesmente EPROM (Erasable Programmable Read Only Memory). Assim como
no caso da PROM, o processador realiza apenas acessos de leitura a uma EPROM.
No entanto, ao contrrio da PROM, o contedo de uma memria EPROM pode ser
apagado, e a memria pode ser novamente usada para armazenar um novo
conjunto de informaes.
Memrias PROM ou EPROM so usadas para armazenar o firmware do
computador. Em geral, o firmware formado por sub-rotinas usadas pelo sistema
operacional, e que interagem diretamente com o hardware do computador. O BIOS
(Basic Input/Output System) em sistemas microcomputadores do tipo IBM PC um
exemplo de firmware. As rotinas que formam o BIOS so armazenadas em
memrias do tipo EPROM.
O terceiro tipo de dispositivo de memria encontrado em um computador a
memria de leitura/escrita, ou RAM (Random Access Memory). Como a prpria
denominao indica, o processador pode efetuar acessos de leitura e escrita a um
dispositivo RAM. Memrias deste tipo so usadas para armazenar as instrues e
dados de um programa em execuo. Existem dois tipos de memria RAM: as
memrias RAM estticas, ou SRAM (Static RAM) e as memrias RAM dinmicas,
ou DRAM (Dynamic RAM). Estes dois tipos de memrias RAM diferem quanto
capacidade de armazenamento e ao tempo de acesso.
Para memrias fabricadas com a mesma tecnologia, a capacidade de um
dispositivo DRAM at 16 vezes maior que a de um dispositivo SRAM. Em geral, a
capacidade mxima de um dispositivo SRAM de 256 Kbits, enquanto dispositivos
de memria DRAM atingem uma capacidade de armazenamento de 4 Mbits. Esta
diferena na capacidade de armazenamento deve-se ao modo como uma clula de
52
Apostila de Arquitetura de Computadores Prof Bruno
bit implementada. Nas memrias DRAM, a clula de bit implementada por um
circuito eletrnico que ocupa uma rea de integrao menor que a ocupada pelo
circuito usado nas memrias SRAM. Como a rea por clula bit menor, para a
mesma rea total de integrao o nmero total de clulas de bit em uma DRAM
maior.
No entanto, as memrias SRAM apresentam uma vantagem sobre as
memrias DRAM no que se refere ao tempo de acesso. Para a mesma tecnologia,
o tempo de acesso de uma SRAM at 4 vezes menor que o tempo de acesso de
uma DRAM. Atualmente, existem memrias SRAM com tempo de acesso de 15 ns,
enquanto as memrias dinmicas mais rpidas apresentam um tempo de acesso de
60 ns. Melhorias no tempo de acesso dos dispositivos DRAM no acontecem na
mesma taxa que o aumento observado na sua capacidade de armazenamento.
Enquanto a tendncia de aumento na capacidade de armazenamento dos
dispositivos DRAM de 60% ao ano, quadruplicando a cada trs anos, a tendncia
observada indica uma diminuio do tempo de acesso de apenas 30% a cada dez
anos.
Os dispositivos DRAM so utilizados em sistemas de baixo e mdio custo
tais como microcomputadores e estaes de trabalho. Com este tipo de dispositivo
possvel dotar um sistema com uma capacidade de memria principal elevada,
sem aumentar significativamente o seu custo. No entanto, o uso de dispositivos
DRAM favorece a capacidade de armazenamento da memria principal em
detrimento do seu tempo de acesso, comprometendo o desempenho do sistema.
Isto fica claro ao comparar-se a freqncia de clock de um processador atual com o
tempo de acesso de uma DRAM. Um processador com freqncia de clock de 50
MHz executa uma operao aritmtica ou lgica sobre operandos em registradores
em 20 ns. Se um dos operandos encontra-se na memria, o tempo de execuo
desta instruo pelo menos trs vezes maior, tempo em vista o tempo de acesso
da DRAM de 60 ns.
Novas classes de aplicaes tais como processamento grfico e multimdia
esto fazendo com que o desempenho seja um fator cada vez mais importante na
faixa de microcomputadores e estaes de trabalho. A soluo para obter o
compromisso desejado entre capacidade de armazenamento, desempenho e custo
encontra-se no uso apropriado de tecnologias de memria com diferentes relaes
entre estes trs fatores. Esta a idia por detrs das memrias cache, cujo
conceito e operao sero examinados a seguir.
5.3 Memrias Cache
A memria cache uma pequena memria inserida entre o processador e a
memria principal, conforme mostra a Figura 5.6.
53
Apostila de Arquitetura de Computadores Prof Bruno
Processador
Memria
Cache
Memria
Principal
Endereo
Dados
Controle
sub-sistema de memria

Figura 5.6. Localizao da memria cache.
A memria cache implementada com o mesmo tipo de circuito eletrnico
usado nas clulas de bit de uma memria RAM esttica. Por este motivo, a
capacidade de armazenamento de uma memria cache situa-se entre 8 Kbytes e
64 Kbytes . No entanto, a memria cache apresenta um baixo tempo de acesso,
possibilitando que o processador acesse dados ali armazenados em apenas um
nico ciclo de clock.
Nesta nova organizao, o processador direciona os acessos inicialmente
para a memria cache. Se o dado referenciado encontra-se na cache, o acesso
completado em apenas um ciclo de clock. Diz-se que ocorre um cache hit quando o
dado referenciado pelo processador encontra-se na cache. Se o dado no se
encontra na cache, diz-se que ocorreu um cache miss. Quando acontece um cache
miss um bloco contendo o dado referenciado, e os dados armazenados em sua
vizinhana, copiado da memria principal para a memria cache. Aps a
transferncia deste bloco de dados para a memria cache, o processador completa
o acesso. Quando ocorre um cache miss, o acesso consome vrios ciclos de clock
para ser completado.
Na prtica, observa-se que entre 90% e 98% dos acessos resultam em um
cache hit. Isto acontece devido a uma propriedade exibida por vrios tipos de
programas, chamada propriedade da localidade de referncia. Segundo esta
propriedade, os acessos memria que acontecem ao longo da execuo de um
programa no so uniformemente distribudos atravs da memria, mas tendem a
se concentrar em pequenas regies da memria durante um certo intervalo de
tempo. A Figura 5.7 representa a propriedade da localidade atravs de um grfico.

54
Apostila de Arquitetura de Computadores Prof Bruno
tempo
endereo
de memria
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

Figura 5.7. A localidade de referncia.
Cada ponto no grfico acima representa a ocorrncia de um acesso
memria. No eixo horizontal est representado o instante em que ocorre o acesso,
enquanto o eixo vertical corresponde ao endereo da locao de memria onde
feito o acesso. A localidade de referncia manifesta-se no fato que, durante alguns
intervalos de tempo, so feitos acessos a locaes de memria em endereos
prximos. Estas regies onde os acessos se concentram durante um certo intervalo
de tempo esto delimitadas na Figura 5.7.
O princpio da localidade sugere que quando feito um acesso a uma
locao de memria , existe uma grande probabilidade que acessos a locaes em
endereos vizinhos tambm sejam feitos no futuro prximo. Aplique agora esta
propriedade ao funcionamento da memria cache. Como mencionado
anteriormente, quando ocorre um cache miss, o dado referenciado copiado da
memria principal para a memria cache, juntamente com os dados armazenados
nas locaes vizinhas. Segundo a propriedade da localidade, existe uma grande
chance de que os acessos aos dados vizinhos tambm sejam feitos em breve. Se
estes outros acessos de fato acontecem, ocorrer um cache hit em todos os
acessos, que sero completados em um nico ciclo de clock.
Na realidade, a memria cache armazena os dados que se encontram em
regies da memria principal onde se verifica uma concentrao de acessos.
Observe que a memria cache tem a capacidade de se adaptar a mudanas nas
regies de concentrao de acesso, que ocorrem ao longo da execuo de um
programa. Uma nova regio com concentrao de acessos torna-se ativa quando
feito um acesso a um dado que se encontra distante dos dados onde foram feitos
acessos recentemente. Como provavelmente este dado no se encontra na cache,
ocorrer um cache miss. Devido a este cache miss, sero copiados para a memria
cache o dado referenciado e os dados na vizinhana, que pertencem justamente
nova regio onde se concentraro os prximos acessos, os quais sero novamente
satisfeitos pela cache.
Com a incluso de uma memria cache, apenas uma pequena parcela dos
acessos realizados sofrem com o alto tempo de acesso da memria principal.
Assim, as memrias cache so extremamente importantes no sentido de obter-se
55
Apostila de Arquitetura de Computadores Prof Bruno
um melhor desempenho. Atualmente, a maioria das arquiteturas de computador
incluem memrias cache em seu sub-sistema de memria.
5.3.1 A Memria Cache no Intel 80486
Alguns processadores, como por exemplo o Intel 80486, j incluem uma
memria cache em sua arquitetura. A memria cache no 80486 ser aqui usada
para mostrar em maiores detalhes a organizao e operao de uma memria
cache tpica. A Figura 5.8 mostra a organizao da memria cache no Intel 80486.
No 80486, a memria cache tem uma capacidade de 8 Kbytes, e armazena
instrues e dados. Outros processadores possuem memrias cache separadas,
uma para instrues e outra para dados.
linha 0 (16 bytes)
conjunto 0
Diretrio RAM
tag controle
.
.
.
.
.
.
linha 1
linha 2
linha 3
conjunto 127

Figura 5.8. Organizao da memria cache no Intel 80486.
A memria cache formada por uma memria RAM e pelo seu diretrio. A
memria RAM organizada em linhas, sendo que em cada linha armazenado um
bloco de dados proveniente da memria principal. Cada linha na memria cache do
80486 armazena um bloco de 16 bytes . Para cada linha, existe uma entrada
correspondente no diretrio. Cada entrada de diretrio contm um tag e bits de
controle, cujas funes sero descritas logo frente. Um grupo de 4 linhas com
suas respectivas entradas no diretrio formam um conjunto. A memria cache no
80486 possui 128 conjuntos. Esta organizao em linhas formando um conjunto
caracterstica das chamadas memrias cache associativas por conjunto (set
associative cache memory). Uma memria cache associativa por conjunto com n
linhas em cada conjunto chamada cache n-associativa por conjunto (n-way set
associative cache).
Existem outros tipos de memrias cache com organizao diferente da
mostrada na Figura 5.8, mas que no sero discutidas neste texto. No entanto,
memria cache associativas por conjunto so as encontradas na maioria dos
processadores. importante ressaltar que o tamanho de linha, o nmero de linhas
por conjunto e o nmero de conjuntos acima mencionados especfico da memria
cache do Intel 80486. Memrias cache associativas por conjunto em outros
processadores podem apresentar configuraes diferentes.
56
Apostila de Arquitetura de Computadores Prof Bruno
Vamos agora examinar como feito um acesso memria cache no Intel
80486, e, em geral, a uma memria cache associativa por conjunto. Ao receber o
endereo de uma locao de memria, a memria cache interpreta este endereo
como mostrado na Figura 5.9(a).
0 3 4 10 11
conjunto byte tag
31
seleciona byte na linha
seleciona conjunto
seleciona linha no conjunto
endereo = 00000104h
4 10 00000
0 15
conjunto 16
00000
4
(a)
(b)

Figura 5.9. Modo de acesso memria cache no Intel 80486.
O endereo logicamente dividido em trs campos: o campo byte, formado
pelos quatro bits menos significativos; o campo conjunto, formado pelos 7 bits
seguintes; e o campo tag, composto pelos 21 bits mais significativos do endereo. A
memria cache usa os bits no campo byte para selecionar um byte especfico
dentro de uma linha. O campo conjunto usado para selecionar um dos conjuntos,
enquanto o campo tag usado para verificar se o dado referenciado se encontra
em alguma das linhas do conjunto selecionado. Note que o tamanho de cada
campo est relacionado com a configurao da memria cache, e assim pode variar
entre as memrias cache de diferentes processadores. O nmero de bits por campo
mostrado na Figura 5.9(a) particular para o caso do 80486.
A Figura 5.9(b) mostra como o acesso de fato acontece. Como exemplo,
suponha um acesso ao byte armazenado na locao de memria de endereo
10000104h (o sufixo h indica base hexadecimal). A memria cache interpreta este
endereo da seguinte forma: byte = 4h, conjunto = 10h e tag = 10000h. A memria
cache seleciona ento o conjunto 16 (10h = 16), e em seguida compara o tag no
endereo recebido (10000h) com os tags armazenados nas entradas de diretrio do
57
Apostila de Arquitetura de Computadores Prof Bruno
conjunto selecionado. Se o tag no endereo coincide com algum dos tags no
diretrio (como o caso na figura), isto significa que o bloco com o byte
referenciado encontra-se na linha associada entrada do diretrio que contm o
tag coincidente. Esta linha ento selecionada e o byte 4 dentro desta linha
finalmente acessado.
A no coincidncia do tag do endereo com os tags armazenados no
conjunto indica que o byte referenciado no se encontra na cache (ou seja, ocorreu
um cache miss). Neste caso, a lgica de controle da memria cache se encarrega
de copiar o bloco apropriado a partir da memria principal. Este bloco ser
armazenado em uma das linhas do conjunto indicado pelo endereo (no exemplo, o
conjunto 16). Uma vez que o bloco tenha sido carregado na memria cache, o
acesso prossegue como descrito acima.
Quando ocorre um cache miss, pode acontecer que todas as linhas do
conjunto selecionado j estejam ocupadas na realidade, este o caso que
normalmente acontece. Nesta situao, a memria cache tem que substituir um dos
blocos residentes no conjunto para dar lugar ao novo bloco. Se o bloco selecionado
para substituio no foi modificado por um acesso de escrita, este bloco
simplesmente descartado. Se o bloco selecionado foi modificado por um acesso de
escrita anterior, este bloco copiado de volta para a memria principal e ento
descartado. Um bit de controle na entrada de diretrio indica se o bloco
armazenado na linha correspondente foi ou no modificado desde o seu
carregamento na memria cache.
A questo central na substituio acima descrita a escolha do bloco a ser
descartado.
A maneira mais simples seria escolher aleatoriamente qualquer um dos
blocos do conjunto selecionado. A escolha aleatria atrativa devido sua
simplicidade de implementao. No entanto, esta poltica aumenta a chance de ser
escolhido um bloco que ser referenciado em breve. Se isto de fato acontece,
ocorrer um cache miss porque o bloco no mais se encontrar na memria cache.
Em um caso extremo, pode acontecer uma triste coincidncia onde sempre
escolhido um bloco que ser referenciado logo em seguida, levando a um crculo
vicioso: um novo bloco expulsa um outro bloco que ser referenciado em breve, o
que vai causar um futuro cache miss; devido a este cache miss, carregado um
bloco que expulsa outro bloco que seria referenciado logo em seguida, causando
um outro cache miss, e assim por diante. Em outras palavras, com a escolha
aleatria existe o risco de um aumento excessivo no nmero de cache misses.
Em geral, adotada uma poltica de escolha mais segura, denominada LRU
(Least Recently Used). A poltica LRU diz que o bloco a ser substitudo aquele que
no referenciado h mais tempo. Este critrio de escolha se baseia no seguinte
raciocnio. Pelo princpio da localidade, quando um bloco referenciado, existe uma
grande chance de que ele seja novamente referenciado em breve. Se um bloco no
referenciado j h algum tempo, isto pode indicar que as referncias
concentradas naquele bloco j aconteceram e que o bloco no mais ser
referenciado, pelo menos no futuro prximo. Assim, este bloco pode ser substitudo
sem o risco de gerar cache misses imediatos. Bits de controle no diretrio indicam
58
Apostila de Arquitetura de Computadores Prof Bruno
se um bloco foi ou no referenciado, sendo consultados quando um bloco deve ser
substitudo. Na prtica, observa-se que a poltica LRU de fato no introduz um
aumento significativo no nmero de cache misses. A memria cache no 80486
adota a poltica LRU.
5.3.2 Memrias Cache Primria e Secundria
Normalmente, a freqncia de cache hit aumenta medida que o tamanho
da memria cache aumenta. No entanto, observa-se que a partir de um certo ponto
o nmero de cache hits no aumenta significativamente com o aumento da
capacidade da memria cache. A partir deste ponto no compensa aumentar o
tamanho da memria cache, pois isto acarretaria um aumento no custo do
processador que no traria um benefcio proporcional.
Para minimizar o efeito dos cache misses residuais, que podem chegar a at
10%, alguns sistemas incorporam duas memrias cache, uma denominada primria
e a outra secundria, em uma estrutura conhecida como memria cache em dois
nveis (two-level cache). A memria cache primria integrada com o processador
em um mesmo dispositivo, possui um tamanho pequeno, no mximo 64 Kbytes
atualmente, e apresenta um tempo de acesso que permite acessos em um nico
ciclo de clock. Por sua vez, a cache secundria externa ao processador,
localizando-se na placa-me do sistema, possui um tamanho bem maior, atingindo
at 512 Kbytes , e apresenta um tempo de acesso maior que a memria cache
primria. Um acesso cache secundria normalmente consome dois ou trs ciclos
de clock.
Em um sistema com esta organizao, a memria cache primria captura a
maioria dos acessos realizados pelo processador. Os acessos que resultam em
miss so em sua maioria capturados pela memria cache secundria. Apesar de
ser um pouco mais lenta que a memria cache primria, a memria cache
secundria ainda significativamente mais rpida que a memria principal. Assim,
os misses da cache primria apresentam uma penalidade menor quando
capturados pela cache secundria do que se fossem direcionados diretamente para
a memria principal. Alm disso, como a tecnologia usada na implementao da
cache secundria mais barata, o seu tamanho pode aumentar sem as mesmas
limitaes de custo da cache primria. Atualmente, memrias cache secundrias
so usadas em diversas classes de sistemas, inclusive microcomputadores
pessoais.


5.4 Memria Virtual
Como mencionado anteriormente, a memria principal disponvel em um
microcomputador ou em uma estao de trabalho em geral bem menor do que o
tamanho mximo de memria permitido pelo processador. O esquema de memria
virtual foi originalmente criado para permitir a execuo de programas cujas
59
Apostila de Arquitetura de Computadores Prof Bruno
exigncias quanto ao tamanho da memria sejam maiores do que a capacidade de
memria instalada no sistema.
5.4.1 O Conceito de Memria Virtual
Em um sistema sem memria virtual, o endereo gerado pelo programa em
execuo o prprio endereo usado para acessar a memria principal. O mesmo
no acontece em um sistema com memria virtual: o endereo gerado pelo
programa, ou endereo virtual, diferente do endereo real usado para acessar a
memria principal. Os possveis endereos virtuais que podem ser gerados pelo
programa formam o espao de endereamento virtual, enquanto a faixa de
endereos na memria principal constitue o espao de endereamento real.
Sob o ponto de vista de um programa, a memria disponvel aquela
representada pelo espao de endereamento virtual. O espao de endereamento
virtual visto e utilizado pelo programa pode ser bem maior do que o espao de
endereamento real, efetivamente retirando do programa as limitaes impostas
pela capacidade da memria fsica de fato existente no sistema. importante
perceber que o espao de endereamento virtual, como o prprio nome indica,
uma abstrao. Embora sob o ponto de vista do programa as instrues e dados
estejam armazenados dentro do espao de endereamento virtual, na realidade
eles continuam armazenados na memria principal, representada pelo espao de
endereamento real.
Esta distino entre endereos e espaos de endereamento exige um
mecanismo que faa a correspondncia entre o endereo virtual gerado pelo
programa e o endereo real que ser usado para acessar a memria principal. Alm
disso, ela abre uma possibilidade que no ocorre em um sistema sem memria
virtual: como o espao de endereamento virtual maior que o espao de
endereamento real, as instrues e dados que para o programa se encontram no
espao virtual podem, na realidade, no se encontrar presentes na memria
principal no momento em que so referenciados. Assim, alm do mapeamento
acima mencionado, necessrio um mecanismo para o carregamento automtico
na memria principal das instrues e dados que so referenciados pelo programa
dentro da sua memria virtual e que no se encontram presentes na memria fsica.
Estes dois aspectos so discutidos em seguida.
5.4.2 O Mecanismo de Memria Virtual
O mapeamento entre endereos virtuais e reais feito por um componente
do sub-sistema de memria chamado tradutor dinmico de endereos, ou DAT
(Dynamic Address Translator). A Figura 5.9 mostra como o DAT se insere dentro do
sub-sistema de memria.
60
Apostila de Arquitetura de Computadores Prof Bruno
Processador
Memria
Principal
sub-sistema de memria
DAT
Endereo Virtual
Endereo Real
Endereo
Dados
Controle

Figura 5.9. O tradutor dinmico de endereos em um sistema com memria virtual.
O processador fornece ao DAT o endereo virtual gerado pelo programa em
execuo. O endereo virtual mapeado em um endereo real pelo DAT e enviado
para a memria principal atravs do barramento de endereo. Note que o
mapeamento feito em cada acesso memria, no incio do acesso.
Para realizar o mapeamento, o DAT utiliza uma tabela de mapeamento,
localizada na memria principal. A tabela de mapeamento permanece na memria
principal durante a execuo do programa. Ao receber um endereo virtual, o DAT
usa este endereo para indexar a tabela de mapeamento. A entrada indexada
contm o endereo real correspondente ao endereo virtual. Na realidade, o
mapeamento no feito a nvel de cada locao de memria, pois isto exigiria uma
tabela de mapeamento com um nmero de entradas igual ao tamanho do espao
de endereamento virtual. Para manter um tamanho de tabela aceitvel, o
mapeamento feito a nvel de blocos, como mostra a Figura 5.10(a).
61
Apostila de Arquitetura de Computadores Prof Bruno
~
~
Bloco 0
Bloco 1
Bloco 2
Bloco n
Espao Virtual
~
~
Bloco 0
Bloco 1
Bloco 2
Espao Real
(a)
base
b'
base
+
+
endereo real
b d
endereo virtual
tabela de
mapeamento
b
(b)
Figura 5.10. Mecanismo bsico de mapeamento.
O espao de endereamento virtual logicamente dividido em blocos, que
so mapeados para o espao de endereamento real pelo DAT. Cada entrada na
tabela de mapeamento contm o endereo-base de um bloco, ou seja, o endereo
real a partir do qual o bloco est armazenado na memria principal. Em uma
memria virtual segmentada, os blocos so chamados segmentos, e podem ter
tamanho varivel. Em uma memria virtual paginada, os blocos so chamados
pginas e possuem tamanho fixo. Alguns processadores, como o Intel 80486,
suportam estes dois modelos de memria virtual.
A Figura 5.10(b) mostra como feito o mapeamento dos blocos. O DAT
considera que o endereo virtual recebido do processador constitudo por dois
campos. O campo b, formado pelos bits mais significativos do endereo virtual,
indica o nmero do bloco onde se encontra a locao de memria referenciada. O
campo d, formado pelos bits menos significativos, indica o deslocamento da locao
de memria (isto , a sua posio) em relao ao incio do bloco.
O DAT usa o valor do campo b para realizar o acesso a uma entrada da
tabela de mapeamento. Para tanto, o DAT soma o valor do campo b ao endereo-
base da tabela de mapeamento. O endereo-base da tabela mantido
internamente no prprio DAT, em um registrador chamado TBR (Table Base
Register). A soma resultante fornece o endereo de uma entrada da tabela e, com
este endereo, o DAT acessa a tabela de mapeamento e obtm o endereo-base
do bloco (indicado por b', na figura acima). Para obter finalmente o endereo real da
locao de memria referenciada, o DAT soma o valor do campo d, que indica a
posio da locao dentro do bloco, ao endereo-base do bloco.
Note que no mecanismo de mapeamento mostrado na Figura 5.10, para
cada referncia memria realizada pelo programa necessrio um acesso
adicional para consultar a tabela de mapeamento. Ou seja, neste esquema o
nmero de acessos memria principal durante a execuo de um programa seria
62
Apostila de Arquitetura de Computadores Prof Bruno
duplicado, comprometendo seriamente o desempenho. Para solucionar este
problema, o DAT possui internamente uma pequena memria, denominada TLB
(Translation Lookaside Buffer). O TLB age como uma memria cache,
armazenando os pares (b, b') que foram usados nos acessos mais recentes.
Uma operao de mapeamento com a TLB ocorre ento da seguinte forma.
O DAT usa o nmero do bloco no campo b para enderear a TLB. Se acontece um
TLB hit, o DAT obtm o endereo-base do bloco (b') a partir da TLB. Neste caso, o
mapeamento no acrescenta nenhum retardo significativo ao acesso. Se acontece
um TLB miss, o DAT consulta a tabela de mapeamento na memria para realizar o
mapeamento. Alm disso, o DAT armazena no TLB o par (b, b') usado neste
mapeamento. Na prtica, a maioria dos mapeamentos so satisfeitos pelo TLB. Isto
acontece devido ao princpio da localidade, discutido anteriormente. Quando uma
locao dentro de um bloco referenciado, existe uma grande chance de que as
locaes vizinhas tambm sejam referenciados em breve. Se estas referncias de
fato ocorrerem, a informao de mapeamento usada nestas referncias j estar na
TLB, e cada mapeamento poder ser completado rapidamente.
5.4.3 A Memria Secundria
Como mencionado anteriormente, devido diferena de tamanho entre os
espaos de endereamento virtual e real, pode acontecer que um bloco
referenciado pelo programa no esteja presente na memria principal no momento
em que a referncia acontece. Os blocos de instrues e dados de um programa
em execuo ficam armazenados na chamada memria secundria, que na
realidade uma unidade de disco do sistema.
A ausncia de um bloco referenciado pelo programa detectada pelo DAT
no momento do mapeamento, e o bloco ento carregado da memria secundria
para a memria principal. A Figura 5.11 mostra em detalhes como isto acontece.
63
Apostila de Arquitetura de Computadores Prof Bruno
2. tabela de mapeamento e TLB no mapeiam o bloco b:
o bloco referenciado no se encontra na memria principal
b n
1. programa referencia locao n
no bloco de nmero b
b
memria secundria
3. o bloco de nmero b transferido
da memria secundria para a memria principal
controlado pelo sistema operacional
memria principal
4. tabela de mapeamento e TLB
so atualizadas
b'
TLB
b b' b' b
tabela de
mapeamento
TLB
xx xx xxxx b
tabela de
mapeamento
5. acesso locao n
memria fsica
n
b'
Figura 5.11. Carregamento de blocos na memria principal.
Neste exemplo, o programa referencia a locao n no bloco b. Ao receber o
endereo virtual, o DAT tenta fazer o mapeamento atravs da TLB. Como a
informao de mapeamento no se encontra na TLB, o DAT procura fazer o
mapeamento atravs da tabela de mapeamento. Um bit de controle na entrada da
tabela indica ao DAT que no existe um mapeamento vlido para o bloco,
significando que o bloco no se encontra na memria principal. A ausncia de um
bloco da memria tambm denominada falha de pgina (no caso de memria
virtual paginada) ou falha de segmento (para memria virtual segmentada). Ao
detectar uma falha, o DAT gera uma interrupo (interrupes sero vistas no
prximo captulo), transferindo o controle do processador para o sistema
operacional.
O sistema operacional obtm do DAT o nmero do bloco que foi
referenciado. O sistema operacional localiza este bloco na memria secundria,
aloca um espao na memria principal e transfere o bloco da memria secundria
para a memria principal. Em seguida, o sistema operacional atualiza a tabela de
mapeamento e o TLB e devolve o controle para o programa que estava em
execuo. O controle devolvido exatamente para o ponto onde se encontra o
acesso que provocou o carregamento do bloco. O acesso ento re-executado
pelo programa, sendo agora completado com sucesso porque o bloco referenciado
j se encontra na memria principal.
Com a memria virtual, no necessrio que todas as instrues e dados de
um programa permaneam na memria principal durante a execuo do programa.
Blocos do programa so transferidos da memria secundria para a memria
principal medida que so referenciados. importante observar que esta
64
Apostila de Arquitetura de Computadores Prof Bruno
transferncia totalmente transparente para o programa e, mais ainda, para o
programador que desenvolveu o programa.
O mecanismo de memria virtual em parte controlado por hardware e em
parte por software. A consulta ao TLB e tabela de mapeamento so realizadas
pelo hardware, representado pelo DAT. O software, representado pelo sistema
operacional, realiza transferncias de blocos entre a memria secundria e a
memria principal e as atualizaes necessrias das estruturas de mapeamento.
Alm disso, o sistema operacional controla a ocupao da memria principal,
localizando reas livres onde um novo bloco pode ser armazenado, ou ainda
determinando blocos que podem ser retirados da memria principal para dar lugar a
novos blocos. A participao do sistema operacional dentro do mecanismo de
memria virtual ser brilhantemente discutida no curso subseqente de sistemas
operacionais.
5.4.4 Memria Virtual no Intel 80486
Alguns processadores oferecem suporte para memria virtual como parte
integrante de sua arquitetura. Estes processadores possuem uma unidade, em
geral denominada Memory Management Unit (MMU), que inclui todo o hardware de
mapeamento discutido acima. O Intel 80486 um exemplo de processador com
suporte para memria virtual. O 80486 pode operar em dois modos. No modo real,
o mecanismo de memria virtual desativado, e o modelo de memria idntico ao
do 8086: os programas visualizam uma memria segmentada, com um tamanho
mximo de 1 Mbyte. No modo protegido, o mecanismo de memria virtual ativado.
Com a memria virtual, o tamanho do espao de endereamento virtual 64 Tbytes
(1 Tbyte = 2
40
bytes ), enquanto o tamanho do espao de endereamento real de
4 Gbytes .
O 80486 suporta os modelos de memria virtual segmentada e paginada. O
espao de endereamento virtual organizado em segmentos com tamanho entre 1
byte e 4 Gbytes . Por sua vez, cada segmento pode ser sub-dividido em pginas
com 4 Kbytes de tamanho. A paginao opcional, e pode ser desativada atravs
do software. A Figura 5.12 mostra o fluxo de endereos atravs destes dois nveis
de memria virtual.
segmentao
endereo
real
endereo virtual
(a)
(b)
segmentao
endereo
linear
paginao
endereo
real
endereo virtual
DAT
DAT DAT

Figura 5.12. Nveis de segmentao e paginao na memria virtual do 80486.
65
Apostila de Arquitetura de Computadores Prof Bruno
A Figura 5.12(a) corresponde ao caso de memria virtual apenas
segmentada. O DAT de segmentao recebe o endereo virtual e gera diretamente
o endereo real. Como mostra a Figura 5.12(b), quando a paginao est ativada, o
DAT de segmentao gera um endereo, chamado endereo linear, que
convertido pelo DAT de paginao no endereo real. Os nveis de segmentao e
de paginao so descritos a seguir.
Vamos examinar inicialmente o nvel de segmentao. Como mostra a Figura
5.13, o DAT de segmentao considera que os endereos virtuais so formados por
um seletor de segmento (segment selector) de 14 bits e por um deslocamento
(offset) de 32 bits.
CS
DS
ES
FS
GS
SS
seletor segmento deslocamento
0 31 32 45
Registradores
de Segmento
endereo de programa
endereo virtual

Figura 5.13. Composio do endereo virtual no 80486.
O seletor de segmento dado pelos 14 bits mais significativos de um dos
registradores de segmento. O seletor de segmento corresponde ao nmero de
bloco na descrio apresentada acima. O deslocamento o prprio endereo
gerado pelo programa, e indica a posio do byte a ser acessado em relao ao
incio do segmento.
Os 13 bits mais significativos do seletor de segmento so usados para
indexar uma tabela chamada tabela de descritores (descriptor table). A tabela de
descritores desempenha o papel da tabela de mapeamento descrita anteriormente.
Cada entrada da tabela contm um descritor de segmento que, dentre outras
informaes, indica o endereo-base do segmento na memria principal. A Figura
5.14 mostra como feito o mapeamento dos segmentos.
66
Apostila de Arquitetura de Computadores Prof Bruno
+ endereo real
seletor deslocamento
endereo virtual
tabela de descritores
DTR
descritor
base

Figura 5.14. Mapeamento no nvel de segmentao do 80486.
O endereo-base da tabela de descritores armazenada no registrador DTR
(Descriptor Table Register). O seletor de segmento concatenado ao endereo em
DTR, resultando no endereo de um descritor de segmento. O deslocamento
ento somado ao endereo-base do segmento indicado pelo descritor de segmento,
resultando no endereo real do byte referenciado.
Na realidade, o nvel de segmentao opera com dois tipos de tabelas de
descritores. Uma das tabelas denominada, Global Descriptor Table, ou GDT. A
GDT pode ser acessada por qualquer programa, permitido o compartilhamento de
segmentos entre programas. A segunda tabela chamada Local Descriptor Table,
ou LDT. A LDT contm descritores de segmento privativos de um programa,
podendo ser acessada apenas por aquele programa. Em um sistema
multiprogramado, onde vrios programas podem ser executados simultaneamente,
cada programa possui sua prpria LDT. O sistema operacional se encarrega de
fazer a associao entre uma LDT e um programa. O endereo-base da GDT
armazenada no registrador GDTR (Global Descriptor Table Register), e o endereo-
base da LDT do programa em execuo armazenada no registrador LDTR (Local
Descriptor Table Register). O bit menos significativo do seletor de segmento indica
se o mapeamento deve ser feito usando a GDT ou a LDT.
Na descrio do mecanismo de memria virtual apresentada acima, o TLB
foi introduzido para reduzir o tempo de mapeamento. No 80486, os registradores de
descritores (descriptor registers) desempenham uma funo equivalente ao TLB. A
organizao dos registradores de descritores mostrada na Figura 5.15.


67
Apostila de Arquitetura de Computadores Prof Bruno
CS
SS
DS
ES
FS
GS
Segment Registers Descriptor Registers

Figura 5.15. Registradores de descritores no DAT de segmentao do 80486.
Como mostra a figura, existe um registrador de descritor para cada um dos
seis registradores de segmento. Quando um registrador de segmento usado para
indexar a tabela de descritores, o descritor selecionado copiado para o registrador
de descritor correspondente. Esta cpia do descritor usada em futuros
mapeamentos para o mesmo segmento, evitando assim o acesso tabela de
descritores. O registrador de descritor automaticamente atualizado quando um
novo seletor de segmento armazenado no registrador de segmento
correspondente.
Podemos agora examinar o nvel de paginao no 80486. Neste nvel, o
mapeamento feito em dois nveis. No primeiro nvel existe uma tabela de diretrio
(directory table), que indica os endereos-base das tabelas no segundo nvel. Cada
tabela no segundo nvel, chamada tabela de pgina (page table), contm os
endereos-base das pginas na memria principal. Este esquema mostrado na
Figura 5.16.
O endereo linear recebido do DAT de segmentao logicamente dividido
em trs campos. O campo diretrio, com 10 bits, usado para acessar uma entrada
na tabela de diretrio; o campo tabela, com 10 bits, usado para acessar uma
entrada em uma das tabelas de pgina; o campo deslocamento, com 12 bits, indica
a posio do byte dentro da pgina.
Um registrador armazena a raiz da estrutura de mapeamento. A raiz o
endereo-base da tabela de diretrio. No primeiro nvel de mapeamento, o campo
diretrio somado raiz, resultando no endereo de uma entrada da tabela de
diretrio. A partir desta entrada da tabela de diretrio obtido o endereo-base de
uma tabela de pgina, que ser usado no segundo nvel de mapeamento.
68
Apostila de Arquitetura de Computadores Prof Bruno
endereo linear diretrio tabela deslocamento
+ endereo real
0 12 22 31
+
tabela de pgina
+
tabela de diretrio
raiz
Figura 5.16. Mapeamento no nvel de paginao do 80486.
No segundo nvel de mapeamento, o campo tabela somado ao endereo-
base obtido no nvel de mapeamento anterior. O resultado o endereo de uma
entrada aa tabela de pgina. A entrada selecionada indica o endereo-base da
pgina na memria principal. O endereo real finalmente obtido somando este
endereo-base ao campo deslocamento. Para evitar o acesso a uma tabela
de pgina a cada mapeamento, o DAT de paginao possui um TLB com 32
entradas. O DAT de paginao usa os 20 bits mais significativos do endereo linear
(os campos diretrio e tabela) para verificar se a informao de mapeamento se
encontra na TLB. Caso ocorra um TLB hit, o TLB fornece o endereo-base da
pgina, que somado ao campo deslocamento para formar o endereo real. Se
ocorre um TLB miss, o mapeamento ocorre como descrito acima. Alm disso, o
endereo-base da pgina usado no segundo nvel do mapeamento armazenado
no TLB, para que possa ser usado em mapeamentos futuros.
69
Apostila de Arquitetura de Computadores Prof Bruno
70
Apostila de Arquitetura de Computadores Prof Bruno
6 O SUB-SISTEMA DE ENTRADA/SADA
Depois do processador e do sub-sistema de memria, este captulo examina
o terceiro componente na arquitetura de um computador, o sub-sistema de entrada
e sada (e/s). Neste sub-sistema esto includas as interfaces de e/s, atravs das
quais os dispositivos perifricos so conectados ao sistema.
Este captulo inicia descrevendo como processador e interfaces de e/s se
comunicam, a organizao tpica de uma interface de e/s, e como o processador
exerce controle sobre um dispositivo perifrico atravs de uma interface de e/s. Em
seguida so apresentadas as principais tcnicas de transferncia de dados em
operaes de e/s. Por ltimo, so discutidos alguns aspectos relacionados com
barramentos de e/s.
6.1 A Interao entre Processador e Interfaces de E/S
Em sistemas tais como microcomputadores e estaes de trabalho, as
interfaces de e/s so ligadas ao processador atravs de barramentos de endereo,
dados e controle, de maneira semelhante conexo entre memria principal e
processador. A organizao tpica de um computador incluindo o sub-sistema de e/s
mostrada na Figura 6.1.
Processador
Memria
Cache
Endereo
Dados
Controle
Memria
Principal
sub-sistema de memria
Disco
.
Vdeo Rede
Interface
de E/S
Interface
de E/S
Interface
de E/S
Sub-sistema de E/S

Figura 6.1. Arquitetura de um computador, incluindo o sub-sistema de e/s.
Assim como acontece em relao memria principal, o processador realiza
acessos de leitura ou de escrita a uma interface de e/s. Em um acesso de leitura, o
processador obtm um dado recebido do dispositivo perifrico conectado
71
Apostila de Arquitetura de Computadores Prof Bruno
interface, ou ento uma informao de estado sobre uma operao de e/s em
andamento ou recm-completada. Em um acesso de escrita, o processador fornece
interface um dado que deve ser enviado ao dispositivo perifrico, ou ento o
cdigo de um comando que inicia uma operao de e/s ou uma operao de
controle sobre o dispositivo perifrico.
Nos acessos s interfaces, o processador executa ciclos de barramento
semelhantes aos descritos no captulo anterior. Cada interface de e/s identificada
por um endereo nico. Em um acesso de leitura, o processador coloca o endereo
da interface no barramento de endereo e ativa um sinal de leitura. Aps um certo
intervalo de tempo, a interface coloca a informao desejada no barramento de
dados. O processador finaliza o ciclo de barramento lendo a informao presente
no barramento de dados e retirando o endereo e o sinal de controle.
Em um acesso de escrita, o processador coloca o endereo da interface e o
dado nos respectivos barramentos, e ativa um sinal de escrita. A interface
selecionada armazena a informao presente no barramento de dados. No final do
ciclo de barramento, o processador retira o endereo e o dado e desativa o sinal de
controle. Assim como nos ciclos de barramento com a memria, todos estes
eventos so comandados pelo processador e ocorrem em sincronismo com o sinal
de clock.
6.2 Organizao de uma Interface de E/S
A principal funo de uma interface de e/s tornar transparente para o
processador os detalhes de operao e controle dos dispositivos perifricos.
Podemos considerar que uma interface de e/s organizada em duas partes, como
mostra a Figura 6.2.
Parte Genrica
Parte Especfica
Dados
Sinais de
Controle
Reg Dados
Reg Controle
Reg Estado
Endereo
Dados
Controle

Figura 6.2. Organizao tpica de uma interface de e/s.
A parte genrica, como o prprio nome indica, semelhante entre os
diferentes tipos de interfaces de e/s. esta poro da interface que vista pelo
processador. Em geral, na parte genrica existem alguns registradores, cujo
nmero e funo depende em parte do tipo de perifrico acoplado interface. No
entanto, como mostra a figura acima, na maioria das interfaces a parte genrica
inclui pelo menos um registrador de dados, um registrador de controle e um
72
Apostila de Arquitetura de Computadores Prof Bruno
registrador de estado. O acesso a cada um destes registradores feito pelo
processador atravs de um endereo de e/s diferente.
O registrador de dados usado para as transferncias de dados entre o
processador e o dispositivo perifrico. Em uma operao de sada, o processador
escreve um dado neste registrador e a interface se encarrega de envi-lo para o
perifrico. No sentido contrrio, em uma operao de entrada, a interface recebe
um dado do perifrico e o armazena no registrador de dados. O processador
executa ento um acesso de leitura interface o obtm o dado depositado no
registrador.
O processador usa o registrador de controle para enviar comandos
interface. Este comando enviado sob a forma de um cdigo. Cada interface
possui um repertrio de comandos prprio. Quando o processador escreve um
comando no registrador de controle, a interface interpreta o cdigo do comando e
executa a operao solicitada, que pode ser uma operao interna interface ou
sobre o perifrico a ela conectado. Finalmente, o registrador de estado usado
para veicular informaes gerais sobre uma operao de e/s. Tipicamente, este
registrador possui bits para indicar o trmino de uma operao e para indicar
condies de erro que eventualmente possam acontecer durante a operao.
A parte especfica interage diretamente com o perifrico, e por isso ela difere
bastante entre os diferentes tipos de interfaces. No entanto, apesar das diferenas,
a parte especfica na maioria das interfaces possui dois conjuntos de sinais. Um
deles a prpria via atravs da qual so transferidos os dados entre a interface e o
perifrico. O outro conjunto formado pelos sinais usados no controle do perifrico.
Como exemplo de interface de e/s, a Figura 6.3 mostra a organizao
simplificada de uma interface para unidades de disco rgido, a interface Intel 82064.
Em sua parte genrica, esta interface possui sete registradores. O data register
registrador usado na transferncia de dados. O command register equivale ao
registrador de controle descrito anteriormente. Algumas operaes exigem
informaes adicionais, que so escrita pelo processador nos registradores de
parmetro. O cylinder register o registrador de parmetro onde o processador
escreve o nmero do cilindro (trilha) onde ser feito o acesso. Os registradores
sector number register e sector count register servem para indicar, respectivamente,
o nmero do setor inicial e a quantidade de setores que devem ser acessados a
partir do setor inicial. No sector/drive/head register o processador escreve o
tamanho do setor em bytes, o nmero da unidade de disco e o nmero da cabea.
Finalmente, o error register indica alguma condio de erro ocorrida.
Na parte especfica, a interface possui dois circuitos que realizam a leitura e
a escrita de dados no disco. Um terceiro circuito controla a parte mecnica da
unidade de disco. Por exemplo, este circuito gera os sinais STEP, que faz a cabea
avanar, e STEP DIR, que indica a direo de avano da cabea. Este circuito
tambm recebe sinais, como o sinal READY, que indicam o estado da unidade de
disco.
73
Apostila de Arquitetura de Computadores Prof Bruno
Command
Sector/Drive/Head
Error
Sector Count
Sector Number
Cylinder
Data
Write
Control
Read
Control
Drive
Control
Read Data
Write Data
Step
Dir
Ready
Track 0

Figura 6.3. Organizao simplificada de uma interface para unidades de disco rgido.
Este exemplo mostra a organizao tpica de uma interface de e/s. De um
lado, a interface possui registradores atravs dos quais o processador envia e
recebe dados, indica o tipo e os parmetros da operao de e/s e obtm in-
formaes sobre o sucesso da operao. Do outro lado, a interface possui os
circuitos e sinais necessrios para controlar um particular perifrico. Organizao
semelhante pode ser encontrada em interfaces para vdeo, impressoras, redes
locais, entre outros.
6.3 Tcnicas de Transferncia de Dados
Em geral, uma operao de e/s envolve a transferncia de dados entre a
memria e a interface de e/s. Existem basicamente trs tcnicas de como realizar
esta transferncia, que so discutidas a seguir.
6.3.1 E/S com Polling
Na e/s com polling, o processador controla toda a transferncia de dados
entre a memria e a interface de e/s. Para entender como funciona esta tcnica,
considere o exemplo de uma operao de escrita em um setor de disco. Suponha
que a interface controladora de disco semelhante quela mostrada na Figura 6.3.
Normalmente, o registrador de estado possui um bit, chamado done bit, que
desativado quando um dado escrito no registrador de dados, sendo ativado
quando este dado escrito no setor do disco. O diagrama na Figura 6.4 mostra
como acontece a escrita de um setor de disco usando-se e/s com polling.

74
Apostila de Arquitetura de Computadores Prof Bruno
selecione
trilha/setor
escreva byte no
registrador de dados
leia
registrador de estado
done bit ativado?
ltimo dado?
fim da operao
sim
sim
no
no
e operao

Figura 6.4. Exemplo de e/s com polling.
Aps escrever um dado no registrador de dados, o processador l o
registrador de estado e testa o done bit, para verificar se o mesmo j foi escrito no
setor do disco. Este teste do bit de estado chamado polling. O processador
continua realizando o polling at encontrar o done bit ativado, o que indica que o
dado j foi escrito no setor do disco. Quando isto acontece, e se ainda existe algum
dado a ser enviado, o processador escreve o novo dado no registrador de dados e
reinicia o polling. Este ciclo repetido at que todos os dados tenham sido escritos
no setor do disco.
A principal vantagem da e/s com polling a sua simplicidade. No entanto,
esta tcnica possui a desvantagem de que o processador fica dedicado operao
de e/s. Isto pode ser extremamente ineficiente, sob o ponto de vista da utilizao do
processador. Considere uma operao de envio de um bloco de caracteres para
uma impressora. O tempo de impresso de um caracter infinitamente maior que o
tempo de execuo de uma instruo. Manter o processador em polling durante o
tempo de impresso de cada caracter um desperdcio, j que durante este
intervalo de tempo o processador poderia executar alguns milhes de instrues de
um outro programa. Devido ao fato que o processador fica dedicado operao de
e/s at o seu trmino, o uso da tcnica de e/s com polling restrita apenas a
sistemas onde apenas um programa pode se encontrar em execuo a cada
instante.

75
Apostila de Arquitetura de Computadores Prof Bruno
6.3.2 E/S com Interrupo
Na e/s com polling, o processador fica dedicado operao de e/s porque
ele o responsvel por determinar quando um novo dado pode ser transferido entre
a memria e a interface de e/s. O mesmo no acontece na e/s com interrupo.
Nesta tcnica, a interface responsvel por notificar o processador quando um
novo dado pode ser transferido. Enquanto a e/s com polling uma tcnica
puramente de software, a e/s com interrupo requer um suporte de hardware. A
interface deve gerar um sinal de interrupo, atravs do qual ela notifica o
processador quando uma operao de e/s foi concluda.
Considere novamente o exemplo da operao de escrita de um setor de
disco. O diagrama na Figura 6.5 mostra como esta operao realizada atravs de
e/s com interrupo. A operao dividida em duas fases. Na fase de disparo da
operao, o processador envia para a interface o comando, o nmero da trilha e do
setor. Ao final da fase de disparo, o processador passa a executar uma outra
atividade qualquer, por exemplo, parte de um outro programa.
A interface inicia a fase de transferncia de dados fazendo um pedido de
interrupo ao processador, atravs do sinal de interrupo. Ao receber o pedido de
interrupo, o processador suspende a execuo do programa corrente e passa a
executar uma rotina especial, chamada rotina de servio de interrupo (tambm
chamada device driver ou device handler). Nesta rotina, o processador verifica
inicialmente se o ltimo dado j foi enviado. Se este o caso, o processador conclui
a escrita do setor do disco lendo o registrador de estado da interface. Caso
contrrio, o processador envia um novo dado e retorna para o programa que se
encontrava em execuo.
Disparo da
Operao de E/S
Transferncia
de Dados
interrupo
ltimo byte
j enviado?
escreva byte no
registrador de dados
no
sim
fim da operao
leia
registrador de estado
rotina de
servio de interrupo
envie trilha, setor
e cdigo da operao

Figura 6.5. Exemplo de e/s com interrupo.
Durante a fase de transferncia de dados, a interface faz um pedido de
interrupo a cada dado escrito no setor do disco. O processador responde ao
76
Apostila de Arquitetura de Computadores Prof Bruno
pedido de interrupo executando a rotina de servio e enviando um novo dado.
Isto se repete at que todos os dados tenham sido escritos no setor do disco.
Normalmente, a interface de disco conhece o tamanho do setor e mantm uma
contagem dos dados j recebidos, de forma que ela pode determinar quando deve
encerrar a seqncia de pedidos de interrupo.
Em um sistema comum existirem vrias interfaces diferentes que fazem
pedidos de interrupo ao processador. Cada interface deve ser atendida por uma
rotina de servio de interrupo especfica para aquela interface. Assim, ao receber
um pedido de interrupo, o processador deve determinar qual a rotina de servio a
ser executada. Alm disso, quando duas ou mais interfaces fazem pedidos de
interrupo simultneos, necessrio decidir qual o pedido de interrupo que ser
atendido. Estas duas funes so suportadas por um componente do sub-sistema
de e/s, chamado controlador de interrupo (interrupt controller) A Figura 6.6 ilustra
o funcionamento do controlador de interrupo em um sistema baseado nos
processadores da famlia Intel 80x86.
Controlador de
Interrupo
Brramento de
Dados
Interface
de E/S
Interface
de E/S
.
.
.
.
.
.
INT
80x86
INT

Figura 6.6. O controlador de interrupo.
Como mostra a figura, o sinal de interrupo de cada interface ligado ao
controlador de interrupo. O controlador de interrupo atribui um nmero e uma
prioridade a cada um destes sinais. Quando um pedido de interrupo acontece, o
controlador de interrupo envia para o processador, atravs do barramento de
dados, o nmero do pedido. No caso de dois ou mais pedidos simultneos, o
controlador decide qual o pedido com maior prioridade e envia para o processador
o nmero correspondente.
O processador usa o nmero recebido do controlador para indexar uma
tabela armazenada na memria, chamada tabela de vetores de interrupo
(interrupt vector table). Cada entrada desta tabela contm o ponteiro, ou vetor, para
uma rotina de servio. Ao receber um nmero de interrupo n, o processador l o
vetor contido na posio n da tabela e passa a executar a rotina de servio de
interrupo apontada por este vetor.
77
Apostila de Arquitetura de Computadores Prof Bruno
Na e/s com interrupo, o processador no fica dedicado operao de e/s.
O processador alocado somente quando realmente deve ser transferido um dado
entre a memria e a interface, resultando em uma utilizao mais eficiente do
processador. No entanto, esta tcnica apresenta uma desvantagem quanto
velocidade de transferncia dos dados. Note que a transferncia de um dado
envolve a arbitrao pelo controlador de interrupo, a comunicao entre o
controlador e o processador, o acesso memria para a leitura do vetor de
interrupo e finalmente o desvio para a rotina de servio. Todas estas etapas
acrescentam um retardo antes que o dado seja realmente transferido. Este retardo
chamado de tempo de latncia de interrupo (interrupt latency time).
Em alguns tipos de perifricos, a taxa de transferncia de dados entre o
perifrico e a interface muito alta, ou em outras palavras, o intervalo de tempo
entre a transferncia de dois dados consecutivos entre o perifrico e a interface
muito pequeno. Devido ao tempo de latncia, o intervalo de tempo entre acessos do
processador interface pode tornar-se maior que o intervalo de tempo com que os
dados chegam interface. Se isto acontece, um novo dado chega interface antes
que o processador leia o dado anterior, e assim o dado anterior perdido.
Na realidade, o que contribui para aumentar o tempo de latncia o fato de
que o processador ainda o responsvel por controlar a transferncia de dados.
Para atender perifricos com alta taxa de transferncia, usa-se a tcnica de e/s com
acesso direto memria, onde o processador no toma parte na fase de
transferncia de dados. Esta tcnica analisada a seguir.
6.3.3 E/S com Acesso Direto Memria
Na e/s com DMA (Direct Memory Access), um componente do sub-sistema
de e/s chamado controlador de DMA responsvel por transferir os dados entre a
memria e a interface de e/s. A Figura 6.7 mostra como o controlador de DMA
ligado ao resto do sistema. Os sinais mostrados nesta figura so aqueles
encontrados em sistemas baseados em processadores da famlia Intel 80x86.
Controlador
DMA
Processador Memria
Interface de
E/S
PDMA PBAR
LIVRE

Figura 6.7. Sistema com controlador de DMA.
Considere novamente o exemplo da operao de escrita de um setor de
disco. Na fase de disparo da operao, o processador informa ao controlador de
78
Apostila de Arquitetura de Computadores Prof Bruno
DMA o nmero de dados a serem transferidos, o endereo do primeiro dado e o
sentido da transferncia (no caso do exemplo, o sentido de transferncia da
memria para a interface de e/s). Em seguida, o processador envia para a interface
controladora de disco o nmero de trilha, o nmero de setor e o comando da
operao.
O processador participa apenas da fase de disparo. Na fase de transferncia
de dados, o controlador de DMA assume o controle dos barramentos para realizar a
transferncia entre a memria e a interface. Para tanto, o controlador de DMA
coloca o processador em um estado, chamado hold state, no qual o processador
fica impedido de iniciar ciclos de barramento. Mais detalhadamente, a fase de
transferncia de dados envolve os seguintes passos:
- aps receber o comando do processador, a interface de disco faz um
pedido de DMA ao controlador de DMA atravs do sinal PDMA. Por sua vez, o
controlador faz um pedido de barramento ao processador, atravs do sinal PBAR.
Ao liberar os barramentos, o processador responde ativando o sinal LIVRE,
indicando ao controlador de DMA que este j pode usar os barramentos.
- controlador de DMA coloca no barramento de dados o endereo do primeiro
dado e ativa o sinal de leitura de memria. A memria responde colocando o dado
endereado no barramento de dados. O controlador de DMA ativa o sinal de escrita
em interface de e/s, fazendo com que a interface de disco capture o dado presente
no barramento de dados.
- ao escrever o dado no setor do disco, a interface faz um novo pedido de
DMA. O controlador de DMA inicia uma nova transferncia, colocando o endereo
do prximo dado no barramento de endereo e ativando os sinais de controle
apropriados. Este passo se repete at que todos os dados tenham sido transferidos.
Ao concluir a ltima transferncia, o controlador de DMA retira o pedido de
barramento, permitindo que o processador volte operao normal.
Note que na e/s com DMA a transferncia de cada dado envolve apenas
uma leitura de memria e uma escrita de interface de e/s, realizadas pelo prprio
controlador de DMA. A e/s com DMA efetivamente elimina o tempo de latncia
associado a cada dado transferido, que existe na e/s com interrupo. Isto permite
que a e/s com DMA atinja taxas de transferncia bem maiores que as tcnicas de
e/s que envolvem o controle do processador.
Em geral, possvel ter vrias interfaces de e/s operando com a tcnica de
acesso direto memria. Para tanto, o controlador de DMA possui vrias entradas
para pedido de DMA. O controlador de DMA associa a cada uma destas entradas
um conjunto independente de registradores para armazenar o nmero de dados a
serem transferidos, o endereo inicial e o sentido da transferncia. Um grupo de
sinais de controle com seus respectivos registradores formam o chamado canal de
DMA. O controlador de DMA se encarrega de arbitrar entre interfaces que fazem
pedidos de DMA simultneos, usando um esquema de prioridades atribudas aos
canais de DMA.
79
Apostila de Arquitetura de Computadores Prof Bruno
6.4 Padres de Barramentos
A Figura 6.1 mostra a arquitetura de sistema tpica de microcomputadores e
algumas estaes de trabalho, onde processador, memria principal e interfaces de
e/s esto interligados atravs de um conjunto de trs barramentos. Estes
barramentos so chamados coletivamente de barramento de sistema. Algumas
caractersticas do barramento de sistema, tais como largura do barramento de
endereo e do barramento de dados, so determinadas pelo processador. Outras
caractersticas esto relacionadas com o sub-sistema de e/s, como por exemplo, o
nmero de sinais de interrupo e o nmero de canais de DMA disponveis no
barramento de controle.
Na categoria de microcomputadores, foram estabelecidos alguns padres de
barramento de sistema, com a finalidade de garantir a compatibilidade com
interfaces de e/s de diferentes fabricantes. A Tabela 6.1 relaciona alguns padres
de barramentos de sistema em microcomputadores e suas principais
caractersticas.

Padro Endereo Dados Interrupes Canais DMA Desempenho
(E/S, DMA)
IBM PC
XT
20 bits 8 bits 8 4 62.5 Kbytes/s
ISA 24 bits 16 bits 15 7 100 Kbytes/s
EISA 32 bits 32 bits ilimitado 7 33 Mbytes/s
PCI 32 bits 32/64 bits ilimitado 132/264
Mbytes/s
Tabela 6.1. Caractersticas de alguns padres de barramentos de sistema.
O barramento de sistema no IBM PC XT era, na realidade, uma simples
extenso dos barramentos do processador Intel 8088. O nmero de sinais de
interrupo e de canais de DMA era bastante limitado. O IBM PC XT foi substitudo
pelo IBM PC AT, cujo barramento de sistema tornou-se o padro ISA (Industry
Standard Architecture). Com o ISA, o nmero de sinais de interrupo e de canais
de DMA foi quase duplicado, enquanto que o desempenho das operaes de e/s
com DMA aumentou em 60%. Apesar da diferena na largura dos barramentos de
endereo e de dados, o padro ISA permite a conexo de interfaces originalmente
projetadas para o barramento IBM PC XT.
Com o lanamento dos processadores Intel 80386 e 80486, aumentaram as
exigncias quanto ao desempenho de e/s. Para fazer face estas exigncias, foi
criado o padro ISA estendido, ou EISA (Extended Industry Standard Architecture).
No padro EISA, transferncias de dados em operaes de e/s so controladas por
80
Apostila de Arquitetura de Computadores Prof Bruno
um componente especial, denominado bus master. Na verdade, um bus master
est contido em uma interface de e/s sofisticada, que normalmente possui uma
lgica dedicada ao controle do barramento e por uma memria local. Em um
barramento EISA podem existir ate 15 bus masters.
O bus master executa ciclos de barramento para transferir dados entre ele
mesmo e a memria principal, ou ainda entre ele e uma interface de e/s. Como as
transferncias so sempre controladas pelo bus master, a memria ou a interface
de e/s so denominados slaves. O bus master pode realizar dois tipos de
transferncias. No primeiro tipo, chamado standard transfer, o bus master e o slave
executam um protocolo de sincronizao a cada dado transferido. No modo burst
transfer, este protocolo de sincronizao executado apenas uma vez, no incio da
transferncia de um bloco de dados. Assim, transferncias no modo burst transfer
so mais rpidas que no modo standard transfer. Tipicamente, no modo standard
transfer, so necessrios 8 ciclos de clock para transferir um dado, enquanto no
modo burst transfer a sincronizao inicial consome 4 ciclos de clock e apenas 1
ciclo adicional para cada dado transferido. O modo burst transfer foi introduzido no
padro EISA para atender as necessidades de perifricos que transferem blocos de
dados com uma alta taxa de transferncia.
O padro EISA tambm permite transferncias usando as tradicionais
tcnicas de interrupo e de acesso direto memria, mas com vantagens. Nos
barramentos PC XT e ISA, existe um numero mximo de sinais para pedidos de
interrupo disponveis no barramento de controle, o que limita o nmero de
interfaces que podem usar a tcnica de interrupo. No barramento EISA, no
existe limitao quanto ao nmero de interfaces que podem solicitar interrupes.
Alm disso, transferncias via DMA so mais rpidas.
Um ponto importante no padro EISA a compatibilidade. Como o prprio
nome sugere, o EISA foi criado como uma extenso de barramentos anteriores. Isto
significa que interfaces para os barramentos PC XT e ISA podem ser usados em
sistemas com barramento EISA.
Atualmente, os computadores so fabricados segundo o padro PCI. Este
padro uma interface de 64 bits num pacote de 32 bits. O barramento PCI roda
em 33 MHz e pode transferir 32 bits de dados em cada ciclo de clock. Uma
caracterstica importante dos padres de barramento mais recentes, como o EISA e
o PCI, o compartilhamento de interrupes. Esta tcnica permite que dois
dispositivos utilizem a mesma interrupo.
6.4.1 Barramentos Locais
Normalmente, um barramento de sistema possui conectores (os chamados
slots) destinados conexo das interfaces de e/s ao sistema. Em geral, o
barramento de sistema inclui um nmero razovel de conectores, de forma a
permitir eventuais expanses com o acrscimo de novas interfaces.
Devido ao grande nmero de conectores, o barramento torna-se fisicamente
longo. Infelizmente, quanto maior o comprimento do barramento, maior ser o efeito
de alguns fatores eltricos indesejveis que limitam a taxa de transferncia de
81
Apostila de Arquitetura de Computadores Prof Bruno
dados. Esta limitao afeta no somente transferncias de dados em operaes de
e/s, mas tambm os acessos memria. Isto acontece porque um mesmo
barramento usado tanto para acessar a memria quanto para conectar as
interfaces de e/s ao sistema. Para eliminar os efeitos negativos de um nico
barramento sobre os acessos memria, alguns sistemas utilizam dois
barramentos distintos, como mostra a Figura 6.9. Nesta organizao, existe um
barramento local que interliga o processador memria principal e um barramento
de e/s parte, usado apenas para a conexo das interfaces de e/s. O barramento
de e/s isolado do barramento local atravs de um adaptador.
Processador
Memria
Principal
Barramento Local
E/S de
Alto Desempenho
Adaptador
Interface
E/S
Interface
E/S
Interface
E/S
Barramento de E/S
(ISA, EISA)

Figura 6.9. Estrutura de um sistema com dois barramentos.
Com barramentos diferentes, a comunicao entre processador e memria
principal fica isolada dos efeitos negativos decorrentes do comprimento excessivo
do barramento de e/s. O comprimento do barramento local extremamente
reduzido: a este barramento podem ser conectados apenas algumas poucas (no
mximo duas ou trs) interfaces de e/s de alto desempenho, como por exemplo,
interfaces de vdeo. Atualmente, existem alguns padres de barramentos locais
estabelecidos. Os mais comuns so o VESA Local-Bus, desenvolvido pela Video
Equipment Standards Association, e o Peripheral-Connect Interface, ou PCI,
desenvolvido pela Intel Corp. Com o aumento do desempenho dos
microprocessadores, existe uma tendncia que arquiteturas com barramentos
distintos venham a ser adotadas em uma faixa cada vez maior de sistemas.

6.4.2 Barramentos de Perifricos
Em alguns sistemas possvel encontrar um terceiro tipo de barramento,
denominado barramento de perifricos. Este nvel de barramento tem como
principal objetivo prover um padro de compatibilidade entre diferentes fabricantes
de dispositivos perifricos. Em geral, o barramento de perifrico conectado ao
barramento de e/s atravs de uma interface adaptadora especial.
82
Apostila de Arquitetura de Computadores Prof Bruno
Atualmente, o principal padro de barramento de perifricos o SCSI (Small
Computer Systems Interface). A primeira verso do padro SCSI foi lanada em
1986. A segunda verso, SCSI 2, foi lanada em 1990. O barramento SCSI possui
uma estrutura em rvore, como mostra a Figura 6.10.
Device 1 Device 8
. . .
Logical
Unit 1
Logical
Unit 8 . . .
. . .
Logical
Subunit 1
Logical
Subunit 256

Figura 6.10. Estrutura do barramento de e/s no padro SCSI.
No primeiro nvel podem existir at 8 SCSI devices. Existem dois tipos de
SCSI devices: o primeiro tipo chamado host adapter, e usado para conectar o
barramento SCSI ao barramento de e/s do sistema; o segundo tipo chamado
peripheral controller. Cada controller pode ser uma interface de e/s ou um
adaptador para o prximo nvel do barramento.
A cada controller podem estar ligados at 8 logical units no nvel abaixo do
barramento. Cada logical unit pode ser um perifrico de e/s ou um adaptador para o
prximo nvel do barramento. Finalmente, a cada logical unit podem estar
conectados at 256 logical subunits no terceito nvel do barramento. Cada logical
subunit corresponde a um perifrico de e/s.
O padro SCSI 2 apresenta dois modos especiais de operao. O primeiro
modo chamado fast SCSI. Enquanto a velocidade no modo bsico de operao
de 4 milhes de transaes por segundo, o modo fast SCSI permite uma velocidade
de 10 milhes de transaes por segundo. No entanto este modo exige um
hardware especial, que aumenta o custo do barramento. O outro modo de operao
chamado wide SCSI. Neste modo so usadas 32 linhas de dados, ao invs das
16 linhas usadas no modo bsico. Os modos fast SCSI e wide SCSI podem ser
usadas em conjunto, possibilitando uma taxa de transferncia de 40 Mbytes/s.
83
Apostila de Arquitetura de Computadores Prof Bruno
7 TPICOS ESPECIAIS
Este captulo discute alguns tpicos que atualmente representam o estado-
da-arte na rea de arquitetura de computadores. Inicialmente, so apresentadas a
tcnica de pipelining e as arquiteturas super-escalares, dois conceitos que se
baseiam na execuo paralela de instrues para aumentar o desempenho de um
processador. Em seguida introduzida a filosofia RISC, cujos princpios so
adotados pela maioria dos processadores lanados recentemente. Finalmente, este
captulo discute sistemas multiprocessadores e supercomputadores voltados para
processamento de alto desempenho.
7.1 A Tcnica de Pipelining
No Captulo 2 foi apresentado o mecanismo bsico de execuo de
instrues, no qual as instrues so executadas seqencialmente. Neste modo, a
execuo de uma nova instruo inicia-se somente quando a execuo da instruo
anterior completada. Isto significa que apenas uma instruo encontra-se em
execuo a cada instante de tempo.
Ao contrrio desta forma de execuo seqencial, a tcnica de pipelining
permite que vrias instrues sejam executadas simultaneamente. Na tcnica de
pipelining, os passos de execuo de uma instruo so realizados por unidades
independentes, denominadas estgios do pipeline. A Figura 7.1(a) mostra a
representao de um pipeline com quatro estgios.
B D E R
i1
i1 i2
i1 i2 i3
i1 i2 i3 i4
(a)
clock
(b)
c1 c2 c3 c4

Figura 7.1. Execuo de instrues em pipeline.
84
Apostila de Arquitetura de Computadores Prof Bruno
Neste pipeline, o estgio B realiza a busca da instruo, o estgio D
decodifica a instruo, o estgio E executa a operao indicada pela instruo, e
finalmente o estgio R armazena o resultado produzido pela instruo. A execuo
de uma instruo inicia-se pelo estgio B, sendo completada no estgio R. Ao ser
finalizado um passo em um certo estgio, a instruo avana para o estgio
seguinte. Em condies normais, uma instruo avana para o estgio seguinte a
cada novo ciclo de clock.
O modo de execuo em pipeline mostrado na Figura 7.1(b). Esta figura
mostra a posio das instrues dentro do pipeline ao final de cada ciclo de clock.
No ciclo c1, a instruo i1 buscada pelo estgio B. No ciclo c2, a instruo i1
decodificada pelo estgio D, enquanto o estgio B busca uma nova instruo, i2. No
ciclo c3, o estgio E executa a operao indicada pela instruo i1, ao mesmo
tempo que o estgio D decodifica a instruo i2 e o estgio B busca a instruo i3.
No ciclo c4 o resultado da instruo i1 armazenado pelo estgio R. Ainda em c4,
as instrues i2 e i3 avanam para o prximo estgio, e o estgio B acessa a
instruo i4.
Note que novas instrues entram no pipeline antes que a execuo das
instrues anteriores seja completada. Quando o pipeline encontra-se cheio, vrias
instrues esto sendo executadas em paralelo, uma em cada estgio do pipeline.
No pipeline da Figura 7.1(b), a cada instante de tempo at quatro instrues podem
se encontrar em execuo.
Na realidade, o aspecto mais importante na tcnica de pipeline que ela
permite que uma instruo seja completada a cada ciclo de clock. Isto pode ser
visto a partir da Figura 7.2.
i1 i2 i3 i4
clock
i2 i3 i4 i5
i6 i3 i4 i5
i4 i5 i6 i7
c1 c2 c3 c4 c5 c6 c7 c8

Figura 7.2. Completando instrues a cada ciclo de clock.
Esta figura mostra a continuao da execuo iniciada na Figura 7.1(b). Ao
final do ciclo c4 a execuo da instruo i1 completada, ao final do ciclo c5 a
execuo de i2 completada, e assim por diante. Entre os ciclos c4 e c7 so
completadas quatro instrues, i1, i2, i3 e i4. Isto significa que, em mdia, foi
necessrio um ciclo para executar cada instruo.
Como visto no Captulo 2, em uma arquitetura seqencial a execuo de
uma instruo consome vrios ciclos de clock. Nestas arquiteturas, o nmero mdio
85
Apostila de Arquitetura de Computadores Prof Bruno
de ciclos por instruo est bem acima da mdia de 1 ciclo/instruo obtida com o
emprego da tcnica de pipelining. A reduo do nmero mdio de ciclos por
instruo contribui diretamente para aumentar o desempenho. Isto pode ser visto
intuitivamente: se um processador requer um menor nmero de ciclos para executar
cada instruo, um certo nmero de instrues ser executado em um nmero de
ciclos menor, o que equivale a dizer, em um tempo menor. Assim, este processador
apresentar um desempenho maior.
A influncia do nmero de ciclos por instruo sobre o desempenho pode ser
mostrada de uma maneira mais formal atravs da expresso que mede o
desempenho pelo tempo de execuo de um programa. Quanto menor o tempo que
um processador consome para executar um programa, maior ser o seu
desempenho. O tempo de execuo de um programa depende do nmero de
instrues executadas e do tempo mdio de execuo de cada instruo, ou seja:
tempo de execuo = nmero de instrues x tempo mdio por instruo
Por sua vez, o tempo mdio de execuo de cada instruo determinado
pelo nmero mdio de ciclos por instruo (cpi) e pelo tempo do ciclo de clock:
tempo mdio por instruo = cpi x tempo de ciclo de clock
Assim, o tempo de execuo dado por:
tempo de execuo = nmero de instrues x cpi x tempo de ciclo do clock
Atravs desta expresso, v-se que o tempo de execuo diretamente
proporcional ao nmero mdio de ciclos por instruo. Ao reduzir este fator para 1
ciclo/instruo, a tcnica de pipelining contribui para aumentar o desempenho de
forma significativa. Por isso, atualmente todas as arquiteturas de processador
voltadas para aplicaes de alto desempenho utilizam a tcnica de pipelining.
Apesar de conceitualmente simples, na prtica a tcnica de pipelining
apresenta alguns problemas. Voltando Figura 7.2, note que a taxa de 1
ciclo/instruo obtida somente quando mantido um fluxo contnuo de instrues
atravs do pipeline. Se isto acontece, uma nova instruo deixa o pipeline a cada
ciclo, ou seja, o nmero de instrues executadas ser igual ao nmero de ciclos,
resultando na mdia de 1 ciclo por instruo executada. No entanto, existem alguns
impedimentos para que seja mantido um fluxo contnuo de instrues atravs do
pipeline. Um das dificuldades em manter a continuidade do fluxo de instrues
acontece, por exemplo, quando existe uma dependncia de dados entre duas
instrues. Uma dependncia entre duas instrues i e j existe quando um dos
operandos da instruo j o resultado da instruo i anterior. Lembre-se que, em
um pipeline, instrues so executadas em paralelo. Se estas duas instrues so
executadas simultaneamente no pipeline, pode acontecer que a instruo i ainda
no tenha produzido o seu resultado no momento em que a instruo j l os seus
operandos. Se no existir nenhum controle, a instruo j l um dos operandos com
um valor antigo, ainda no atualizado pela instruo i, levando a uma execuo
incorreta. Note que este problema no existe quando instrues so executadas
sequencialmente.
86
Apostila de Arquitetura de Computadores Prof Bruno
A soluo mais simples para garantir que a dependncia seja respeitada
consiste em paralizar a execuo da instruo j (e das instrues subseqentes)
quando esta chega ao estgio onde seus operandos so acessados, at que a
instruo i seja completada. No entanto, esta paralizao parcial do pipeline resulta
em uma descontinuidade no fluxo de instrues, elevando o nmero mdio de ci-
clos por instruo.
Devido as situaes que provocam a quebra do fluxo de instrues, na
prtica o nmero mdio de ciclos por instruo aproxima-se, mas no exatamente
igual, a 1 ciclo/instruo. No entanto, ainda assim esta mdia fica bem abaixo
daquela observada em arquiteturas sem pipeline. Existem vrias tcnicas que
procuram minimizar a ocorrncia de situaes onde o fluxo de instrues
interrompido. No entanto, a anlise destas tcnicas, apesar de extremamente
interessante, no cabe no escopo deste texto.
7.2 Arquiteturas Super-Escalares
A expresso apresentada na seo anterior relaciona o tempo de execuo
com o nmero mdio de ciclos necessrios para executar uma instruo (cpi).
Podemos tambm expressar o tempo de execuo em funo do nmero de
instrues executadas por ciclo, ou ipc. Se em mdia so necessrios C ciclos para
executar I instrues, o nmero mdio de ciclos por instruo ser cpi = C/I,
enquanto o nmero mdio de instrues completadas por ciclo ser ipc = I/C. Note
ento que cpi = 1/ipc, e assim a expresso para o tempo de execuo pode ser
reescrita como:
tempo de execuo =
nmero de instrues x tempo de ciclo de
ipc
clock

Esta expresso indica que o tempo de execuo diminui, e por conseguinte o
desempenho aumenta, na medida que o nmero de instrues completadas por
ciclo aumenta.
Na tcnica de pipelining, apenas uma instruo completada por ciclo (veja
a Figura 7.2), resultando em um fator ipc mximo de 1 ciclo/instruo. Seria
possvel aumentar ainda mais o desempenho caso o fator ipc fosse elevado para
acima desta mdia. Para obter um aumento adicional no desempenho pela
elevao do fator ipc, seria necessrio permitir que mais de uma instruo fosse
completada a cada ciclo. Esta a idia central nas arquiteturas super-escalares.
Uma arquitetura super-escalar dotada de mltiplas unidades funcionais
independentes, que executam instrues em paralelo. A cada ciclo, vrias
instrues podem ser enviadas, ou despachadas, para execuo nestas unidades
funcionais. Desta forma, possvel completar a execuo de vrias instrues a
cada ciclo de clock, e assim aumentar o fator ipc para alm de 1 instruo/ciclo. A
Figura 7.3 mostra a organizao bsica de uma arquitetura super-escalar.
87
Apostila de Arquitetura de Computadores Prof Bruno
Unidade de Despacho
Unidade de
Inteiros
Unidade de
Inteiros
Unidade de
Ponto Flutuante
Unidade de
Memria

Figura 7.3. Arquitetura super-escalar bsica.
Nesta arquitetura super-escalar hipottica, at quatro instrues podem ser
completadas por ciclo. Existem duas unidades de inteiros que executam instrues
aritmticas e lgicas sobre nmeros inteiros, uma unidade de ponto flutuante que
executa instrues aritmticas sobre nmeros com ponto flutuante, e ainda uma
unidade de memria que executa instrues de acesso memria.
A cada ciclo, a unidade de despacho acessa e decodifica um certo nmero
de instrues, e verifica quais destas instrues podem ser despachadas para as
unidades funcionais. Tipicamente, uma instruo despachada quando a unidade
funcional apropriada encontra-se disponvel e quando no existe uma dependncia
de dados entre esta instruo e uma outra instruo ainda em execuo.
Os processadores mais recentes destinados a aplicaes de alto
desempenho apresentam arquiteturas super-escalares. A ttulo de exemplo, a
seguir descrevemos resumidamente trs arquiteturas super-escalares: Alpha AXP,
Pentium e PowerPC 601.
7.3 A Arquitetura Alpha AXP
A arquitetura Alpha AXP foi introduzida pela Digital Equipment Corp. em
1993. A primeira implementao desta arquitetura o DEC Alpha 21064, um
processador que opera com freqncia de clock de 200 MHz. A organizao da
arquitetura Alpha mostrada na Figura 7.4.
88
Apostila de Arquitetura de Computadores Prof Bruno
EBox
Adder
Multiplier
Shifter
Logic Unit
IBox
Prefetcher
Pipeline
Control
FBox
Multiplier/
Adder
Divider
Integer
Registers
Floating-Point
Registers
ABox
Address Generator TLB
Instruction
Cache
Data
Cache

Figura 7.4. Organizao da arquitetura DEC Alpha AXP.
A arquitetura Alpha possui quatro unidades funcionais. A unidade IBox
realiza a busca e o despacho de instrues, e executa as instrues de
transferncia de controle. A unidade EBox executa as instrues aritmticas e
lgicas sobre inteiros, enquanto a unidade FBox executa as instrues aritmticas
sobre nmeros com ponto-flutuante. A Ebox opera sobre inteiros de 64 bits,
enquanto a FBox manipula nmeros com ponto flutuante com preciso simples (32
bits) e preciso dupla (64 bits). Instrues de acesso memria so executadas
pela unidade ABox. As unidades EBox e FBox possuem possuem conjuntos de
registradores separados, cada um com 32 registradores de 64 bits. A arquitetura
ainda inclui memrias cache separadas para instrues e dados. Ambas as caches
so do tipo associativa por conjunto. No Alpha 21064, cada memria cache possui
8 Kbytes, com linhas de 32 bytes e quatro linhas por conjunto.
No DEC Alpha 21064, as unidades funcionais so implementadas com a
tcnica de pipelining. Os pipelines no Alpha 21064 so mostrados na Figura 7.5.
89
Apostila de Arquitetura de Computadores Prof Bruno
I1 I2 IWR
A1 A2 A3
F1 F2 F3 F4 F5 FWR
I BOX pipeline
E BOX pipeline
A BOX pipeline
F BOX pipeline
BR IF SW ID IR

Figura 7.5. Pipelines no DEC Alpha 21064.
Os quatro primeiros estgios esto na IBox, e efetuam o acesso e despacho
das instrues. A cada ciclo, o estgio IF acessa duas instrues na memria cache
de instrues. O estgio SW faz uma previso do resultado de instrues de desvio.
Normalmente, o estgio SW solicita ao estgio IF a busca das duas prximas instru-
es seqenciais. Ao encontrar uma instruo de desvio, este estgio procura
antecipar o resultado do desvio (desvio efetuado/desvio no-efetuado) e solicita a
busca das instrues no destino previsto.
O estgio SW tambm responsvel por determinar se duas instrues
podem ser despachadas simultaneamente. No Alpha 21064, algumas combinaes
de instrues no podem ser despachadas em um mesmo ciclo, devido a conflitos
no acesso aos conjuntos de registradores e no uso dos barramentos internos. A
Tabela 7.1 mostra as combinaes de instrues que podem ser despachadas
simultaneamente.
Instruo 1 Instruo 2
instrues inteiras instrues de ponto flutuante
instrues de acesso memria instrues inteiras/ponto flutuante
instrues de transferncia de controle instrues de acesso memria, inteiras ou
de ponto flutuante
Tabela 7.1. Possveis combinaes de instrues para despacho simultneo no Alpha
21064.
Quando no possvel despachar duas instrues no mesmo ciclo, o estgio
SW serializa o despacho, enviando as instrues do par para o estgio seguinte em
ciclos diferentes. O estgio ID completa a decodificao de instrues iniciada no
estgio SW, verificando possveis dependncias entre as instrues a serem
despachadas. Caso haja alguma interdependncia, o despacho destas instrues
serializado. Finalmente, no estgio IR os operandos das instrues so acessados
nos registradores, e as instrues so enviadas para execuo.
Instrues de desvio so executadas no estgio BR, ainda na IBox. As
instrues aritmticas e lgicas sobre inteiros so executadas nos estgios I1 e I2
90
Apostila de Arquitetura de Computadores Prof Bruno
na EBox. O resultado armazenado em registradores no estgio IWR. Instrues
de ponto flutuante so executadas na FBox nos estgios F1 a F5. O resultado
escrito em um registrador de ponto flutuante no estgio FWR.
As instrues de acesso memria so executadas nos estgios A1, A2 e
A3 na Abox. O endereo efetivo calculado no estgio A1. A converso de
endereo virtual para endereo real e o acesso memria cache de dados
acontecem no estgio A2. Em instrues de leitura da memria, o dado acessado
armazenado no registrador-destino no estgio A3.
7.4 Arquitetura do Pentium
O processador Pentium, lanado pela Intel Corp. em 1993, tambm
apresenta uma arquitetura super-escalar. A verso inicial do Pentium opera com
uma freqncia de clock de 66 MHz. A organizao da arquitetura do Pentium
aparece na Figura 7.6.
O Intel Pentium inclui trs unidades funcionais. As unidades denominadas U-
Pipe e V-Pipe executam instrues aritmticas e lgicas sobre nmeros inteiros de
64 bits. A FPU (Floating-Point Unit) executa instrues aritmticas sobre nmeros
com ponto-flutuante com preciso simples (32 bits), preciso dupla (64 bits) e
preciso estendida (128 bits). Ao contrrio do 80486, que tambm inclui uma
unidade de ponto flutuante em sua arquitetura, no Pentium a FPU usa a tcnica de
pipelining. No 80486 instrues de ponto flutuante so executadas
seqencialmente, com a execuo uma nova instruo iniciando-se apenas aps o
trmino da anterior. Com pipelining, a FPU do Pentium permite que uma nova
instruo de ponto flutuante seja iniciada antes do trmino da anterior.
91
Apostila de Arquitetura de Computadores Prof Bruno
Instruction
Cache
Prefetch Buffers
U Pipe V Pipe
Register Set
Data Cache
Floating
Point
Unit

Figura 7.6. Organizao da arquitetura do Intel Pentium.
Associado s duas unidades de inteiros existe um conjunto de registradores
semelhante ao existente nos processadores da famlia 80x86 (veja Captulo 4). A
FPU contm um conjunto de 8 registradores. Ao contrrio do 80486, que possui
apenas uma memria cache para instrues e dados, o Pentium inclui memrias
cache separadas. Ambas as memrias cache no Pentium possuem 8 Kbytes, e so
do tipo associativa por conjunto, com 32 bytes por linha e duas linhas por conjunto.
No Pentium, as instrues sobre inteiros so executadas em um pipeline com
5 estgios, enquanto instrues de ponto flutuante so executadas em um pipeline
com 8 estgios. Os pipelines no Pentium so mostrados na Figura 7.7.
D2 E WB
D2 E WB
X1 X2
IF D1
WF ER
U-Pipe
V-Pipe
FPU

Figura 7.7. Estrutura dos pipelines no Intel Pentium.
92
Apostila de Arquitetura de Computadores Prof Bruno
Os dois primeiros estgios so comuns s unidades U-Pipe, V-Pipe e FPU. O
estgio IF acessa simultaneamente duas instrues na memria cache, as quais
so decodificadas no estgio D1. O estgio D1 decide se as duas instrues podem
ser despachadas no mesmo ciclo para as unidades U-Pipe e V-Pipe. As instrues
sero despachadas simultaneamente se ambas forem instrues simples, e se
no existir uma dependncia de dados entre elas. Uma instruo simples aquela
cuja execuo no controlada via microprograma, e que pode ser executada em
um nico ciclo de clock. Se uma das instrues no simples, a primeira instruo
do par despachada para a U-Pipe. No ciclo seguinte, a segunda instruo do par
associada com uma nova instruo decodificada, e o estgio D1 novamente
verifica se ambas podem ser despachadas simultaneamente. Se este ainda no o
caso, a segunda instruo do par anterior despachada e o processo se repete.
Os estgios D2, E e WB so replicados na U-Pipe e V-Pipe. No estgio D2, a
decodificao da instruo completada. No estgio E realizada a operao na
ALU no caso de instrues aritmticas e lgicas, ou a memria cache de dados
acessada em instrues de acesso memria. No estgio WB o resultado da
instruo escrito no registrador-destino.
Alm dos estgios IF e D1, o pipeline da FPU tambm usa os dois primeiros
estgios da U-Pipe e V-Pipe. Isto significa que uma instruo sobre inteiros no
pode ser despachada juntamente com uma instruo de ponto flutuante no mesmo
ciclo. Uma instruo de ponto flutuante despachada para o estgio D2 da U-Pipe.
A FPU usa os estgios E da U-Pipe e V-Pipe para acessar operandos na memria
cache de dados. Os estgios seguintes localizam-se de fato na FPU. Nos estgios
X1 e X2 a instruo executada, e o resultado armazenado no registrador-destino
no estgio WF. O estgio ER acontece o tratamento de erros que podem acontecer
execuo da instruo de ponto flutuante.
Com a adoo de uma arquitetura super-escalar, o Pentium pode atingir um
desempenho significativamente maior que o processador da gerao anterior, o
Intel 486. Uma comparao do desempenho do Pentium com o 80486 mostrada
na Figura 7.8.
SPECint92 SPECfp92
0
10
20
30
40
50
60
70
SPECint92 SPECfp92
486 DX-33
486 DX/2
Pentium

93
Apostila de Arquitetura de Computadores Prof Bruno
Figura 7.8. Comparao do desempenho do 80486 e do Pentium.
7.5 A Arquitetura PowerPC 601
A arquitetura PowerPC foi desenvolvida em conjunto pela Apple Computer,
IBM Corp. e Motorola. Na realidade, a arquitetura PowerPC baseada na
arquitetura IBM POWER (Power Optimization with Enhanced RISC), implementada
pelos processadores da linha de estaes de trabalho IBM RS/6000. Por este
motivo, os processadores PowerPC e RS/6000 so semelhantes em diversos
aspectos.
O PPC 601 o primeiro processador da famlia PowerPC. Outros trs
processadores, o PPC 603, PPC 604 e PPC 620, esto com lanamento previsto
at 1995. Estes processadores diferem quanto freqncia de clock e o nmero de
instrues que podem ser completadas por ciclo. A Tabela 7.2 mostra uma
comparao entre os processadores da famlia PowerPC.
Objetivo de Mercado Clock Instrues/ciclo
PPC 601 relao custo/desempenho 50, 66, 80 MHz 3
PPC 603 baixo consumo (laptops) 66, 80 MHz 3
PPC 604 relao custo/desempenho - 4
PPC 620 alto desempenho - 6
Tabela 7.2. Processadores da famlia PowerPC.
A descrio que se segue particular para o PPC 601. A Figura 7.9 mostra a
organizao da arquitetura do PowerPC 601.

94
Apostila de Arquitetura de Computadores Prof Bruno
Instruction Queue
Dispatch Logic
Branch
Unit
Processor
(BPU)
Fixed
Point
Unit
(FXU)
Cache
Memory
Management
Unit
(MMU)
Floating
Point
Unit
(FPU)
Instruction
Fetch
Unit

Figura 7.9. Organizao da arquitetura do PowerPC 601.
O PPC 601 possui trs unidades funcionais. A unidade FXU executa as
instrues aritmticas e lgicas sobre inteiros de 64 bits. Operaes sobre nmeros
com ponto flutuante so executadas na FPU. Nmeros com ponto flutuante podem
ter preciso simples (32 bits) ou preciso dupla (64 bits). A FXU e FPU possuem
conjuntos de registradores separados, cada um com 32 registradores de 64 bits. A
unidade BPU executa apenas as instrues de transferncia de controle. A unidade
de busca de instrues (Instruction Fetch Unit) no executa nenhum tipo de
instruo, sendo apenas responsvel por acessar a memria cache e preencher a
fila de instrues na unidade de despacho. A unidade MMU responsvel por
controlar a memria virtual. O PPC 601 inclui uma memria cache unificada para
instrues e dados. A memria cache armazena 32 Kbytes e do tipo associativa
por conjunto, com 64 bytes por linha e oito linhas por conjunto. A arquitetura do
PPC 603, e provavelmente as do PPC 604 e PPC 620, possui memrias cache de
instrues e de dados separadas.
A estrutura dos pipelines na arquitetura PPC 601 mostrada na Figura 7.10.
95
Apostila de Arquitetura de Computadores Prof Bruno
X WB
IF Disp
FP Unit
BR Unit
BRX
FX Unit
D X1 X2 WF

Figura 7.10. Pipelines no PowerPC 601.
O estgio IF realiza a busca de instrues, enquanto o estgio Disp
decodifica e despacha instrues. A cada ciclo, o estgio IF acessa at 8 instrues
na memria cache, que so armazenadas em uma fila at serem despachadas. A
unidade de despacho pode enviar at trs instrues para execuo em um mesmo
ciclo.
Como a figura indica, uma instruo de transferncia de controle executada
no estgio BRX no mesmo ciclo em que despachada. Instrues aritmticas e
lgicas so executadas no estgio X da FXU, sendo o resultado armazenado no
registrador-destino no estgio WB.
Instrues de ponto flutuante no so decodificadas no estgio Disp, mas no
estgio D da FPU. A operao de ponto flutuante executada nos estgios X1 e
X2, e o resultado armazenado no estgio WF.
Embora conceitualmente simples, a execuo paralela de instrues em
arquiteturas super-escalares envolve vrios problemas. Os principais so as
dependncias de dados entre instrues e as instrues de transferncia de
controle, que limitam o nmero de instrues despachadas por ciclo. Arquiteturas
super-escalares incorporam mecanismos sofisticados para minimizar os efeitos
destes dois fatores e permitir uma explorao mais efetiva do potencial oferecido.
Um outro aspecto que se torna muito importante com as arquiteturas super-
escalares a qualidade do cdigo gerado pelo compilador. O compilador
desempenha um papel fundamental em otimizar a seqncia de instrues no
cdigo do programa, de modo a minimizar a freqncia de instrues que no
podem ser despachadas simultaneamente. Avaliaes no Intel Pentium mostram
que um programa compilado por um compilador otimizador apresenta um
desempenho 30% maior que um programa compilado por um compilador para uma
arquitetura no super-escalar.
Apesar destes problemas, o modelo super-escalar vem sendo utilizado em
um nmero cada vez maior de arquiteturas. Alm daqueles aqui mostrados,
podemos ainda citar como exemplos de processadores com arquitetura super-
escalar o IBM RS/6000, o Motorola M88110, e o Sun SuperSPARC .
96
Apostila de Arquitetura de Computadores Prof Bruno
7.6 Arquiteturas RISC
Uma das principais tendncias nas arquiteturas de processador que surgiram
ao longo das dcadas de 70 e 80 foi a crescente sofisticao dos seus conjuntos de
instrues. Nestas arquiteturas, operaes que antes eram realizadas por uma
seqncia de vrias instrues passavam a ser executadas por uma nica
instruo. Esta sofisticao das instrues decorria das limitaes do hardware e do
software disponveis na poca.
A principal limitao do hardware estava na capacidade de armazenamento e
na velocidade da memria principal. Os dispositivos de memria apresentavam
baixa densidade e alto tempo de acesso. Devido baixa capacidade de
armazenamento da memria principal, era desejvel que o cdigo executvel de um
programa tivesse tamanho reduzido. A velocidade da memria principal contribua
para reforar esta necessidade. O tempo de acesso memria principal era em
mdia 10 vezes maior que o tempo de execuo de uma instruo com operandos
em registradores. Este desbalanceamento levou ao princpio amplamente aceito na
poca de que o tempo de execuo de um programa seria proporcional ao tamanho
do seu cdigo. Programas longos teriam um maior tempo de execuo devido ao
maior nmero de instrues acessadas na memria. Assim, desejava-se reduzir o
tamanho do cdigo no somente para economizar espao, mas tambm para obter-
se um melhor desempenho.
Do lado do software, o estado inicial dos compiladores apresentavam
limitaes que somavam-se s do hardware. Como ainda no haviam sido
desenvolvidas tcnicas eficientes de otimizao de cdigo, o cdigo gerado por um
compilador era em geral maior do que o cdigo do mesmo programa quando escrito
diretamente em linguagem assembly. Programas em linguagens de alto nvel eram
assim considerados ineficientes em termos de espao e tempo de execuo. No
entanto, a crescente complexidade das aplicaes foi tornando proibitiva a
programao em linguagem assembly. medida que as aplicaes se tornavam
mais sofisticadas, o uso de linguagens assembly resultava em uma dificuldade e
custo de desenvolvimento cada vez maiores. O uso de linguagens de alto nvel
tornava-se imprescindvel.
Tais circunstncias motivaram o desenvolvimento de arquiteturas para
suportar o uso de linguagens de alto nvel. Programas de alto nvel compilados para
tais arquiteturas deveriam ser to eficientes quanto programas escritos em
assembly. Estas arquiteturas receberam o nome de arquiteturas para linguagens de
alto nvel, ou arquiteturas HLLC (High-Level Language Computer Architectures). As
arquiteturas conhecidas como CISC (Complex Instruction Set Computers) so um
tipo particular de arquiteturas HLLC. Usaremos aqui o termo arquitetura complexa
referindo-se s arquiteturas HLLC em geral e s arquiteturas CISC em particular.
Para alcanar o seu objetivo, a abordagem usada nas arquiteturas
complexas foi elevar o nvel de funcionalidade do conjunto de instrues. O
raciocnio por detrs desta abordagem apresentado a seguir.
7.6.1 Lacuna Semntica
97
Apostila de Arquitetura de Computadores Prof Bruno
Uma das caractersticas em uma arquitetura de processador o nvel de
funcionalidade do seu conjunto de instrues. Em um conjunto de instrues com
alto nvel de funcionalidade, cada instruo realiza um grande nmero de
operaes. Ao contrrio, em um conjunto de instrues com baixo nvel de
funcionalidade, cada instruo tipicamente executa apenas uma nica operao. A
Figura 7.11 mostra um exemplo que esclarece este conceito. Nesta figura, o
comando de alto nvel C = A + B implementado usando-se instrues com
diferentes nveis de funcionalidade.

ADD A,B,C LOAD A, R1
LOAD B, R2
ADD R1,R2,R3
STORE R3,C
instruo com alto nvel de instrues com baixo nvel de
funcionalidade funcionalidade
Figura 7.11. Comparao entre instrues com alto e baixo nvel de funcionalidade.

O comando A=B+C envolve quatro operaes: carregamento das variveis A
e B em registradores, a adio propriamente dita e finalmente o armazenamento do
resultado em C. Em um conjunto de instrues com alto nvel de funcionalidade,
existe uma instruo de adio que executa todas estas operaes. Por exemplo, a
instruo ADD A,B,C acessa diretamente os operandos na memria, realiza a
adio e ainda armazena o resultado na memria. Em um conjunto de instrues
com baixo nvel de funcionalidade, a instruo de adio realiza apenas uma
operao, a adio em si, sobre operandos em registradores. O carregamento dos
registradores e o armazenamento do resultado so realizados por instrues
adicionais, como mostra a figura.
O conceito de nvel de funcionalidade tambm aplicvel linguagens de
programao. Linguagens como Pascal e C apresentam um alto nvel de
funcionalidade da serem chamadas linguagens de alto nvel. Por exemplo,
considere o comando FOR na linguagem C. Cada iterao do FOR envolve (1) o
incremento de uma varivel de controle, (2) a comparao do novo valor da varivel
de controle com um certo valor limite e (3) um eventual desvio para o incio do loop.
Comandos de alto nvel como o FOR possuem um alto nvel de funcionalidade
porque a execuo de um nico comando envolve vrias operaes.
Linguagens de programao de alto nvel e conjuntos de instrues
normalmente apresentam nveis de funcionalidade diferentes. esta diferena entre
nveis de funcionalidade foi dado o nome de lacuna semntica (semantic gap). A
abordagem usada pelas arquiteturas complexas foi o de elevar o nvel de
98
Apostila de Arquitetura de Computadores Prof Bruno
funcionalidade do conjunto de instrues, diminuindo a lacuna semntica. Com isto,
procurava-se reduzir o nmero de instrues necessrias na implementao dos
comandos de alto nvel. Para ilustrar esta idia, considere o exemplo na Figura
7.12.
A Figura 7.12(a) mostra implementao do comando FOR em uma arquitetura
com instrues com baixo nvel de funcionalidade. Neste caso, o acesso e
decremento da varivel de controle do loop e o desvio condicional exigem quatro
instrues. Suponha agora uma arquitetura que oferece uma instruo DBNZ
(Decrement and Branch if Not Zero), a qual decrementa um valor em memria e
realiza um desvio condicional se o resultado do decremento no nulo. Nesta
arquitetura, a implementao do FOR exige apenas uma instruo, ao invs de
quatro instrues, como mostra a Figura 7.12(b).
for (i = 0; i < 100; i++)
{
(corpo do loop)
}

STORE 100,I STORE 100,I
LOOP: . LOOP: .
. corpo do loop . corpo do
loop
. .
LOAD I,R1 DBNZ I,LOOP
SUB 1,R1,R1
STORE R1,I
JNZ LOOP
(a) (b)
Figura 7.12. Implementao do FOR usando instrues com diferentes nveis de
funcionalidade.

Uma arquitetura com uma pequena lacuna semntica, ou seja, com um
conjunto de instrues com um alto nvel de funcionalidade, traria dois benefcios.
Em primeiro lugar, os programas de alto nvel seriam mais eficientes em termos do
espao ocupado na memria, j que a implementao dos comandos de alto nvel
99
Apostila de Arquitetura de Computadores Prof Bruno
exigiriam um menor nmero de instrues. Isto aliviaria os problemas decorrentes
da limitao na capacidade de armazenamento da memria principal. Em segundo
lugar, ao implementar comandos de alto nvel com um menor nmero de instrues,
o nmero total de acessos memria para busca de instrues seria tambm
menor. Assim, os programas de alto nvel seriam mais eficientes tambm em tempo
de execuo. Isto compensaria o desbalanceamento entre a velocidade do
processador e da memria principal.
7.6.2 Crticas s Arquiteturas Complexas
medida que surgiam novas arquiteturas complexas, vrios estudos foram
sendo realizados com o objetivo de avaliar o comportamento destas arquiteturas.
Os resultados obtidos apontaram vrias desvantagens na filosofia de aumentar o
nvel de funcionalidade das instrues. As principais crticas contra as arquiteturas
complexas, formuladas com base nas evidncias fornecidas por estas pesquisas,
so as seguintes.
Eficincia dos Programas. A primeira crtica levantada contra as arquiteturas
complexas a de que o aumento do nvel de funcionalidade das instrues no
necessariamente resulta em programas mais eficientes. Como mencionado, uma
das vantagens esperadas das arquiteturas complexas seria a reduo no tempo de
execuo de programas, conseqncia da substituio de seqncias de instrues
simples por uma nica instruo complexa. No entanto, foram observados casos
onde isto no verdade. Um exemplo a INDEX, do VAX-11, usada no acesso a
vetores. Esta instruo verifica se o ndice do elemento a ser acessado est dentro
dos limites do vetor e em seguida calcula o endereo da posio de memria onde
est armazenado aquele elemento. Verificou-se que a instruo INDEX poderia ser
substituda por uma seqncia de instrues simples que realizariam estas mesmas
operaes em um tempo 45% menor. Exemplos como este mostravam que
algumas instrues complexas apresentavam um tempo de execuo elevado, s
vezes maior que o tempo de execuo de uma seqncia de instrues simples que
realiza a mesma tarefa.
Utilizao de Instrues. Vrias pesquisas foram realizadas para identificar
quais as instrues que apareciam com maior freqncia no cdigo compilado para
arquiteturas complexas. Os resultados obtidos revelaram que apenas uma pequena
parcela das instrues oferecidas era efetivamente utilizada. Por exemplo, foi
observado que dentre as 183 instrues oferecidas pelo IBM 370, apenas 48
formavam a maioria (99%) das instrues executadas por um conjunto de diversos
tipos de programas escritos em diferentes linguagens. Alm disso, foi verificado que
as instrues mais comuns eram justamente aquelas mais simples.
Verificou-se que o alto nvel de funcionalidade na realidade restringe o uso
das instrues complexas. Uma instruo complexa se assemelha ou implementa
diretamente um comando de alto nvel. Existem vrios comandos em diferentes
linguagens de alto nvel que so semelhantes, no sentido que executam uma
mesma operao. No entanto, em geral estes comandos diferem em vrios
detalhes. Por exemplo, o comando DO na linguagem FORTRAN e o comando FOR
na linguagem C so usados para executar a mesma operao, qual seja, um loop.
100
Apostila de Arquitetura de Computadores Prof Bruno
No entanto, embora realizem a mesma operao, estes comandos diferem quanto a
inicializao, atualizao e teste da varivel que controla a repetio do loop.
Diferenas como estas fazem com que comandos funcionalmente
equivalentes sejam implementados de maneiras diferentes. Assim, uma instruo
complexa semelhante a um comando em uma certa linguagem de alto nvel pode
no ser adequada na implementao do comando equivalente em outras
linguagens. Na prtica, estas instrues so substitudas por seqncias de
instrues simples, com as quais possvel satisfazer exatamente os detalhes de
implementao dos comandos em diferentes linguagens, diminuindo a utilizao
das instrues complexas.
Efeito sobre o Desempenho. Uma das principais crticas contra as
arquiteturas complexas que o aumento do nvel de funcionalidade possui um
efeito negativo sobre o desempenho. Esta afirmao baseia-se na relao entre o
nvel de funcionalidade das instrues e a complexidade de implementao da
arquitetura.
Em geral, a unidade de controle de uma arquitetura complexa
implementada com a tcnica de microprogramao. Em geral, arquiteturas
complexas oferecem um nmero elevado de instrues e modos de
endereamento. Alm disso, a execuo de uma instruo com alto nvel de
funcionalidade envolve a realizao de um grande nmero de operaes bsicas.
Devido estas caractersticas, a implementao da unidade de controle usando
lgica aleatria torna-se extremamente difcil. Na prtica, a microprogramao a
nica alternativa para contornar as dificuldades de implementao de uma
arquitetura complexa.
Como visto no Captulo 2, a execuo de uma microinstruo envolve (1) a
gerao do endereo da microinstruo, (2) o acesso memria de microinstruo
e (3) o armazenamento no registrador de microinstruo. Cada um destes passos
apresenta um certo retardo. A realizao de cada um destes passos apresenta um
certo retardo, que se somam determinando o tempo de execuo da
microinstruo. Como uma microinstruo executada a cada ciclo de clock, o
tempo de ciclo do clock tambm determinado por estes retardos. Na prtica, os
retardos na unidade de controle microprogramada dificultam a reduo do ciclo de
clock, limitando assim o desempenho.
A questo aqui colocada que nos casos onde os retardos inerentes uma
unidade de controle microprogramada contribuem para limitar ou aumentar o tempo
do ciclo de clock, a existncia de instrues funcionalmente complexas contribuiria
na realidade para reduzir o desempenho.

Existe um ponto em comum por detrs de todas estas crticas contra as
arquiteturas complexas: o compromisso entre a funcionalidade da arquitetura (isto
, do seu conjunto de instrues) e o seu desempenho. De um lado, por questes
de eficincia e flexibilidade, as instrues com alto nvel de funcionalidade so na
prtica pouco utilizadas na codificao dos programas de alto nvel. Do outro lado, a
101
Apostila de Arquitetura de Computadores Prof Bruno
incluso destas instrues afeta negativamente o desempenho, na medida que
implementao da arquitetura exige uma tcnica que pode limitar o ciclo de clock.
Assim, o argumento central o de que as arquiteturas complexas apresentam um
mau compromisso entre funcionalidade e desempenho, porque paga-se com uma
perda no desempenho por uma funcionalidade que no efetivamente utilizada. Foi
esta constatao que levou idia de simplificar o conjunto de instrues para
obter-se arquiteturas com melhor desempenho. Esta idia discutida a seguir.
7.6.3 A Filosofia RISC
As desvantagens das arquiteturas complexas relacionadas acima constituem
um dos fatores que motivaram a filosofia RISC (Reduced Instruction Set
Computers). Um outro fator foi o rpido avano tecnolgico ocorrido ao longo da
dcada de 80.
Como visto, as arquiteturas complexas surgiram devido s limitaes na
capacidade de armazenamento e no tempo de acesso da memria principal. No
entanto, a partir da dcada de 80 verificou-se um aprimoramento significativo na
tecnologia de memrias semicondutoras. A capacidade de armazenamento dos
dispositivos de memria aumentava rapidamente: a tendncia era de um
crescimento na capacidade de armazenamento de 60% ao ano, com uma
quadruplicao a cada trs anos. Alm disso, devido ao aperfeioamento dos
processos de fabricao e produo em larga escala, havia uma constante
diminuio no preo dos dispositivos de memria. Esta queda no preo possibilitava
que novos sistemas fossem equipados com uma memria principal cada vez maior.
O aumento na capacidade de armazenamento e a queda do preo dos dispositivos
de memria praticamente eliminaram as limitaes quanto ao tamanho da memria
principal. O desbalanceamento entre a velocidade do processador e a velocidade
da memria principal tambm foi atenuada com novos processos de fabricao,
mas deixou realmente de ser um fator limitante com a introduo das memrias
cache.
O novo quadro que existia no incio da dcada de 80 era ento o seguinte.
Surgiam evidncias de que instrues complexas no necessariamente contribuam
para melhorar o desempenho. Ao mesmo tempo, eram minimizadas as limitaes
no tamanho e na velocidade da memria principal. Assim, enquanto eram
apontadas desvantagens no uso de instrues com alto nvel de funcionalidade,
desapareciam as circunstncias que haviam justificado esta abordagem. Este novo
quadro motivou e viabilizou a proposta das arquiteturas RISC.
A princpio bsico na filosofia RISC a simplicidade das instrues.
Arquiteturas RISC fornecem apenas aquelas instrues simples mais
freqentemente usadas na codificao de programas de alto nvel. Uma instruo
complexa includa na arquitetura somente se forem satisfeitos dois critrios.
Primeiro, a utilizao desta instruo dever ser significativa, ou seja, a instruo
dever ser realmente til na codificao de diferentes tipos de programas escritos
em diferentes linguagens. Segundo, o ganho final no desempenho dever ser maior
do que eventuais perdas no tempo de execuo das instrues simples que
ocorram com o acrscimo da instruo complexa. Nos casos em que algum destes
102
Apostila de Arquitetura de Computadores Prof Bruno
critrios no atendido, torna-se prefervel a implementao da instruo complexa
em software, atravs de uma seqncia de instrues simples.
Ao adotar um conjunto de instrues simples, a filosofia RISC procura
melhorar o desempenho atravs da diminuio da complexidade de implementao
da arquitetura. Se a arquitetura oferece apenas instrues simples, torna-se vivel
implementar a unidade de controle usando lgica aleatria no lugar da tcnica de
microprogramao. Isto eliminaria os retardos em uma unidade de controle
microprogramada, permitindo redues no ciclo de clock e o aumento no
desempenho.
7.6.4 Caractersticas das Arquiteturas RISC
Ao analisar as arquiteturas RISC hoje existentes possvel identificar vrias
caractersticas que so comuns a todas elas. As principais caractersticas das
arquiteturas RISC so as seguintes:
Implementao com Lgica Aleatria. Esta primeira caracterstica j foi
discutida acima. Em arquiteturas RISC, a unidade de controle implementada com
lgica aleatria para permitir uma diminuio no tamanho do ciclo de clock.
Pipeline de Instrues. Todas as arquiteturas RISC adotam a tcnica de
pipelining na execuo de instrues. Com isto, arquiteturas RISC procuram
melhorar o desempenho tambm com a reduo do nmero mdio de ciclos por
instruo.
Arquitetura Registrador-Registrador. Arquiteturas RISC adotam o modelo de
arquitetura registrador-registrador. Como visto no Captulo 3, neste tipo de
arquitetura os operandos de instrues aritmticas e lgicas encontram-se apenas
em registradores. A existncia de instrues aritmticas/lgicas que podem
acessar operandos diretamente na memria, como acontece nas arquiteturas
complexas, contribui para aumentar a complexidade da unidade de controle. A
adoo do modelo registrador-registrador segue o princpio de simplificar a
implementao da arquitetura para tornar possvel um menor tempo de ciclo.
Regularidade no Formato das Instrues. As instrues em arquiteturas
RISC possuem uma codificao altamente regular. Todos os cdigos de instruo
possuem o mesmo tamanho, igual ao de uma palavra da memria. Com isto, uma
instruo completa pode ser acessada em um nico ciclo (caso ela se encontre na
cache), o que importante para manter um fluxo contnuo de instrues atravs do
pipeline e simplificar a unidade de controle. Alm disso, a regularidade permite, por
exemplo, que os operandos sejam acessados em paralelo com a decodificao do
cdigo de operao da instruo. Isto diminui o tempo de decodificao e favorece
a diminuio do tempo de ciclo.
7.6.5 Histrico das Arquiteturas RISC
Apesar das arquiteturas terem chegado ao mercado somente no final da
dcada de 80, a idia RISC surgiu em meados da dcada de 70. Em 1975, um
grupo de pesquisa na IBM Yorktown Heights, liderados por John Cocke,
103
Apostila de Arquitetura de Computadores Prof Bruno
desenvolveram o IBM 801, que foi na realidade o primeiro sistema baseado em um
processador com arquitetura RISC. A arquitetura POWER, usada nos
processadores da linha de estaes de trabalho IBM RS/6000 herda algumas
caractersticas do IBM 801.
No incio da dcada de 80, dois projetos em universidades americanas
deram um impulso nas arquiteturas RISC. Na Universidade da Califrnia em
Berkeley, um grupo dirigido por David Patterson desenvolveu o RISC I e o RISC II;
um outro grupo na Universidade de Stanford, tendo frente John Hennessy,
desenvolveu o MIPS. Estes grupos desenvolveram os dois primeiros
microprocessadores RISC, e demonstraram na prtica o ganho de desempenho
que poderia ser obtido com arquiteturas RISC. Posteriormente, o RISC II deu
origem ao microprocessador Sun SPARC, usado nas estaes de trabalho Sun
SPARCStation 2. O MIPS deu origem origem famlia de microprocessadores
MIPS Rx000, usados nas estaes de trabalho da DEC.
Devido s vantagens que apresenta para a implementao e para o
desempenho, a filosofia RISC vem sendo adota por praticamente todos os
processadores de alto desempenho lanados recentemente. As nicas excees
significativas so o Intel 80486 e Pentium (ainda assim, a prpria Intel produz um
processador RISC, usado basicamente em aplicaes de engenharia e de
processamento cientfico). A Tabela 7.3 relaciona os principais processadores RISC
hoje (1994) disponveis comercialmente.
Fabricante Processador
DEC Alpha AXP 21064
Hewlett-Packard PA7100
IBM RS/6000, PowerPC
Intel i860
MIPS R3000, R4000
Motorola M88110, PowerPC
Sun SPARC
Tabela 7.3. Relao de alguns processadores com arquitetura RISC.
7.7 Sistemas Paralelos
At o momento, examinamos arquiteturas de computadores onde existe
apenas um processador acoplado a uma memria principal. Um sistema paralelo
aquele onde existem vrios processadores e mdulos de memria, que se
comunicam atravs de uma certa estrutura de interconexo. Nesta seo
fornecemos uma viso geral dos tipos de sistemas paralelos existentes.
104
Apostila de Arquitetura de Computadores Prof Bruno
Atualmente, existe uma enorme variedade de sistemas paralelos. Uma das
possveis classificaes de sistemas paralelos foi proposta por M. J. Flynn, e
mostrada na Tabela 7.4.
Denominao Nmero de
Fluxos de
Instruo
Nmero de
Fluxos de Dados
Exemplos de Sistemas
Reais
SISD - Single
Instruction, Single
Data Stream
1 1 Sistemas convencionais
Uniprocessadores
SIMD - Single
Instruction Multiple
Data Stream
1 Mltiplos Supercomputadores
vetoriais
MISD -
Multiple Instruction
Single Data Stream
Mltiplos 1 Nenhum
MIMD - Multiple
Instruction Multiple
Data Stream
Mltiplos Mltiplos Multiprocessadores
Multicomputadores
Tabela 7.4. Classificao de sistemas paralelos, segundo Flynn.
A classificao de Flynn se baseia no nmero de fluxos de instruo e de
fluxos de dados existentes no sistema. Um fluxo de instruo uma seqncia de
instrues endereadas pelo contador de programa de um elemento processador.
Se um sistema possui n contadores de programa, este sistema capaz de
processar n fluxos de instruo distintos. Um fluxo de dados corresponde a um
conjunto de dados que manipulado por um elemento processador.
7.7.1 Sistemas SISD
Um sistema SISD possui apenas um fluxo de instruo, e opera sobre um
nico fluxo de dados. Este tipo corresponde aos sistemas vistos at agora, onde
existe um nico processador. O contador de programa deste processador
estabelece o nico fluxo de instrues do sistema.

7.7.2 Sistemas SIMD
Um sistema SIMD tambm possui um nico fluxo de instruo, mas opera
sobre diversos fluxos de dados. Em um sistema deste tipo, existe um nico
contador de programa. Cada instruo endereada por este contador de programa
executada em paralelo por diversos elementos processadores, cada elemento
operando sobre um dado pertencente a um fluxo de dados diferente.
105
Apostila de Arquitetura de Computadores Prof Bruno
Os supercomputadores vetoriais constituem um exemplo de sistema SIMD. O
conjunto de instrues de um supercomputador vetorial inclui instrues vetoriais,
que realizam a mesma operao sobre mltiplos elementos de um vetor. Por
exemplo, um supercomputador vetorial pode oferecer uma instruo VADD que
soma, em paralelo, os elementos correspondentes de dois vetores.
Supercomputadores vetoriais so normalmente empregados em reas
cientficas que exigem altssimo desempenho, tais como fsica nuclear, mecnica de
fluidos e de sistemas rgidos, previso meteorolgica, anlise ssmica em
prospeco de petrleo, dentre outras. Outra caracterstica destes sistemas o alto
preo, que pode atingir centenas de milhes de dlares. Os sistemas Cray-1S,
Cray-2S, Cray X-MP e Cray Y-MP, todos da Cray Research, Inc., so exemplos de
supercomputadores vetoriais.
7.7.3 Sistemas MISD
Neste tipo de sistema, instrues pertencentes a mltiplos fluxos de dados
operam simultaneamente sobre um mesmo dado. Na prtica, no existe nenhum
tipo de sistema que possa ser considerado de fato como do tipo MISD.
7.7.4 Sistemas MIMD
Em um sistema MIMD, existem mltiplos fluxos de instruo, cada um destes
fluxos sendo executado por um processador diferente sobre um conjunto de dados
diferente. Atualmente, dentro desta classe existem diversas sub-classes de
sistemas com diferentes caractersticas. Uma classificao dos sistemas MIMD,
proposta por C. G. Bell, mostrada na Figura 7.13.
MIMD
multiprocessadores
multicomputadores memria
distribuda
memria
centralizada

Figura 7.13. Classificao de sistemas MIMD, segundo Bell.
Esta classificao est baseada em dois critrios: o nmero de espaos de
endereamento vistos pelos processadores e o mecanismo de comunicao entre
os processadores. Em um ramo esto os sistemas multiprocessadores, onde os
mltiplos processadores do sistema vem e compartilham apenas um nico espao
de endereamento lgico. Nestes sistemas, os processadores se comunicam
atravs do espao de endereamento compartilhado por todos eles.
106
Apostila de Arquitetura de Computadores Prof Bruno
Os sistemas multiprocessadores diferem no modo como a memria lgica
implementada fisicamente. Em sistemas com memria compartilhada centralizada
(centralized shared-memory) o espao de endereamento implementado sob a
forma de um nico mdulo de memria central, acessado por todos os
processadores. Em sistemas com memria compartilhada distribuda (distributed
shared-memory), o espao de endereamento fisicamente implementado atravs
de mltiplos mdulos de memria. Os processadores acessam estes mdulos de
memria atravs de uma rede de interconexo.
No outro ramo dos sistemas MIMD esto os sistemas multicomputadores.
Nestes sistemas, cada processador possui seu prprio espao de endereamento.
Estes espaos de endereamento no so compartilhados, ou seja, cada espao de
endereamento privativo de um certo processador. Por no haver um
compartilhamento de memria, os processadores usam mensagens para
comunicarem entre si.
Multicomputadores diferem quando sua implementao fsica. Alguns
sistemas so formados por mdulos contendo processador e memria, sendo estes
mdulos interligados por canais de comunicao formando uma malha, cubo ou
anel. Em outros multicomputadores, os componentes do sistema so computadores
completos, incluindo processador(es), memria e dispositivos perifricos,
interconectados por um meio de comunicao. Redes locais de computadores so
exemplos deste tipo de multicomputador.
Atualmente, a tendncia em sistemas paralelos segue em duas direes: no
ramo dos multiprocessadores, para os sistemas com memria compartilhada
distribuda e, dentro dos multicomputadores, para as implementaes distribudas
como redes locais de computadores. Isto acontece porque estes dois tipos de
sistemas so escalveis. Em um sistema escalvel, o desempenho aumenta (linear
ou sub-linearmente) medida que so acrescentados mais processadores. Por
exemplo, atualmente existem sistemas com memria compartilhada distribuda
maciamente paralelos, formados por milhares de processadores. Estes sistemas
possuem um desempenho da mesma ordem dos supercomputadores vetoriais, mas
com um preo significativamente menor. Esta melhor relao desempenho-custo
dos sistemas maciamente paralelos vem atraindo a ateno de um nmero cada
vez maior de pesquisadores e fabricantes.

Você também pode gostar