Você está na página 1de 10

Universidade Federal de Santa Maria

NOTAS DE AULA
Prof. Antonio Carlos Schneider Beck Filho (UFSM)
Prof. Jlio Carlos Balzano de Mattos (UFPel)

Arquitetura de Von Neumann


O modelo (ou arquitetura) de von Neumann foi concebido a partir de 1946,
quando John von Neumann e sua equipe desenvolveram um novo projeto de
computador de programa armazenado. Projetado pela IAS (Princeton Institute for
Advanced Studies), este computador foi largamente difundido, influenciando muitos
projetos subsequentes de outras mquinas.
Ainda hoje, a maior parte dos computadores concebida tendo, como idia
fundamental, os princpios desta arquitetura. Suas principais caractersticas so:
Possuir uma unidade de processamento central, para a execuo de operaes
lgicas e aritmticas;
Possuir uma unidade de controle, responsvel por determinar o seqenciamento
das instrues a serem executadas por meio de sinais de controle;
Instrues dos programas armazenadas de maneira seqencial, facilitando a
busca;
Existncia de registradores dedicados ao armazenamento dos operandos e dos
resultados das operaes;
Unidade de armazenamento central, na qual so guardados programas e dados,
de forma compartilhada;
Existncia de um nico barramento do sistema, o qual deve ser usado de forma
compartilhada para a transferncia de dados e instrues entre os diversos
blocos.
Dentre todas as caractersticas supracitadas, as duas ltimas resultam em
restries severas para a tentativa de aumento de desempenho de computadores
baseados no modelo de von Neumann. Levando-se em conta que os tempos de
execuo das instrues que envolvem apenas operaes internas na CPU so muito
menores do que o tempo necessrio para transferncias entre a memria e CPU, o fato
de instrues e dados utilizarem o mesmo caminho para serem transferidos da
memria principal para a CPU limita a possibilidade de explorao do paralelismo entre
operaes. Este problema comumente referido como gargalo do modelo de von
Neumann.

Instrues
As instrues de um computador so operaes que devem ser executadas em
uma seqncia pr-determinada. Estas instrues compem um programa. Desta
maneira, um programa uma lista de instrues que especificam operaes,
operandos e a seqncia em que o processamento deve ocorrer. O processamento de
dados executados em um computador pode ser alterado pela especificao de um novo
programa com instrues diferentes ou pela especificao das mesmas instrues com
diferentes dados.
O bloco de controle responsvel por ler uma instruo da memria, decodificla e gerar uma ou mais micro-operaes (que so os bits que controlam o bloco
operativo). As instrues podem variar de um computador para outro. Processadores
que seguem um determinado padro e que utilizam o mesmo conjunto (ou subconjunto) de instrues sendo, de certa forma, compatveis entre si, constituem uma
famlia de processadores. O Conjunto de instrues suportadas por um determinado
processador (ou famlia) chamado de Instruction Set Architecture (conjunto de
instrues da arquitetura), cuja sigla ISA comumente utilizada.
Uma instruo representada por um conjunto de bits que instruem o
processador a executar uma operao especifica. Este conjunto de bits chamado de
operation code (cdigo da operao), geralmente chamada de opcode. O nmero de
bits necessrios para o opcode de uma instruo a funo do nmero total de
operaes no conjunto de instrues e da quantidade de operandos disponveis.
A operao de uma instruo deve ser executada utilizando os dados
armazenados nos registradores do computador ou na memria. Uma instruo, alm do
mais, deve especificar no somente uma operao, mas tambm os registradores e
palavras de memria em que os operandos so encontrados e onde o resultado deve
ser armazenado.
A linguagem binria em que as instrues so definidas e armazenadas na
memria so referidas como linguagem de mquina (machine language). Uma
linguagem simblica que substitui os opcodes e endereos binrios por nomes
simblicos e que fornece outras caractersticas de auxilio para o programador referida
como linguagem de montagem (assembly language). A estrutura lgica dos
computadores normalmente descrita em manuais de referncia da linguagem de
montagem.
A habilidade de executar um programa da memria a mais importante
propriedade de um computador de uso geral.

Formatos das instrues


O formato de instruo geralmente representado por uma caixa retangular
simbolizando as funes de cada bit da instruo, mostrando como eles seriam
armazenados nas palavras de memria ou no registrador de controle. Os bits so
divididos em grupos ou campos (fields). Cada campo associado a um item
especfico, como a funo a ser executada, um valor constante, ou o endereo do
banco de registradores. A formatao e o conjunto de regras a serem seguidas por
estes campos constituem no formato de uma instruo.
Os campos tpicos encontrados em um formato de instruo so:
(a) campo do opcode (opcode field) que especifica a operao que deve ser
realizada.
(b) Campo de endereo (address field) que fornece ou o endereo de
memria ou um endereo para selecionar um registrador.
(c) campo de modo (mode filed) que especifica a maneira que o campo de
endereo deve ser interpretado.
O exemplo abaixo mostra trs formatos de instrues. Suponha que o
computador abaixo possua um banco de registradores com 8 registradores, R0 at R7.
O formato de instruo (a) consiste em um opcode que especifica trs ou menos
registradores, conforme necessrio. Um registrador designado como destino e os
outros dois registradores fonte como operandos.
O formato de instruo (b) possui um opcode, dois campos para registradores e
um operando. O operando uma constante chamada de operando imediato, assim ele
est imediatamente disponvel na instruo.
O formato de instruo (c) em contraste aos dois outros formatos, no altera
nenhum contedo de registrador e memria. Ele afeta a ordem em que as instrues
so buscadas na memria. A localizao de uma instruo que deve ser buscada
determinada pelo programa counter (PC).

Ciclo bsico de operao de um computador


Para compreender os vrios conceitos de endereamento que sero
apresentados a seguir, necessrio compreender o ciclo bsico de operao de um
computador. A CPU de um computador projetada para executar cada instruo de um
programa na seguinte seqncia de passos:
1.
2.
3.
4.
5.
6.
7.

Buscar a instruo da memria para um registrador de controle;


Decodificar a instruo;
Localizar os operandos utilizados pela instruo;
Buscar os operandos da memria (se necessrio);
Executar a operao nos registradores do processador;
Armazenar os resultados no lugar prprio;
Voltar ao passo 1 para buscar a prxima instruo.

Como j apresentado anteriormente, existe um registrador no computador


chamado program counter (PC) que fornece a seqncia das instrues do programa
que est armazenado na memria. O PC armazena o endereo da prxima instruo
que ser executada e incrementado por um cada vez que uma palavra dos programa
lida da memria. A decodificao concluda (passo 2) determina a operao que deve
ser executada e o modo de endereamento da instruo. Os operandos do passo 3 so
localizados a partir do modo de endereamento e dos campos de endereamento da
instruo. O computador executa a instruo, armazena o resultado, e retorna para o
passo 1 para buscar a prxima instruo da seqncia.

Conjunto de registradores
O conjunto de registradores consiste em todos os registradores da CPU que
podem ser acessados pelo programador. Estes registradores so tipicamente os
mencionados nos manuais de referncia da linguagem assembly. As CPUs podem
tambm conter outros registradores, como o registrador de instrues, ou ainda outros
registradores que so acessveis somente internamente (o programador no pode,
explicitamente, mudar seus valores). O conjunto de registradores consideravelmente
influenciado pela arquitetura do conjunto de instrues.

Endereamento dos operandos


Instrues de at 3 endereos
O programa que avalia a expresso X = (A + B).(C + D) utilizando instrues de trs
endereos mostrado abaixo:
ADD T1, A, B
ADD T2, C, D
MUL X, T1, T2

M[T1] M[A] + M[B]


M[T2] M[C] + M[D]
M[X] M[T1] x M[T2]

O smbolo M[A] denota um operando armazenado em memria no endereo


simbolizado por A. O smbolo x designa uma multiplicao. T1 e T2 so temporrios
armazenados em memria.
O mesmo programa pode utilizar registradores como temporrios:
ADD R1, A, B
ADD R2, C, D
MUL X, R1, R2

R1 M[A] + M[B]
R2 M[C] + M[D]
M[X] R1 x R2

A vantagem do formato de 3 endereos que resulta em programas pequenos


para avaliao de expresses. A desvantagem que o cdigo binrio das instrues
requer mais bits para especificar os trs endereos, particularmente se eles so
endereos de memria.

Instrues de at 2 endereos
Para instrues de 2 endereos, cada campo de endereamento pode
especificar tambm um possvel registrador ou endereo de memria. O primeiro
endereamento de operando listado na instruo simblica o endereo implcito que o
resultado da operao ser transferido.
MOVE T1, A
ADD T1, B
MOVE X, C
ADD X, D
MUL X, T1

M[T1] M[A]
M[T1] M[T1] + M[B]
M[X] M[C]
M[X] M[X] + M[D]
M[X] M[X] x M[T1]

O registrador temporrio R1 disponvel e pode ser trocado por T1. Note que
este programa resulta em cinco instrues ao invs das trs necessrias quando
utilizada uma arquitetura com instrues de 3 endereos.

Instrues de 1 endereo
Para executar instrues como ADD, o computador com um instrues de 1 endereo
utiliza um endereo implcito um registrador chamado acumulador (accumulator)
ACC para obter um dos operandos, assim como gravar o resultado. O programa para
implementar a expresso aritmtica anterior a seguinte:
LD A
ADD B
ST X
LD C
ADD D
MUL X
ST X

ACC M[A]
ACC ACC + M[B]
M[X] ACC
ACC M[C]
ACC ACC + M[D]
ACC ACC x M[X]
M[X] ACC

Todas as operaes so feitas entre o registrador ACC e um operando da memria.


Neste caso, o nmero de instrues aumenta para 7.

Instrues de zero endereo


Para executar uma instruo ADD com zero endereo, todos os trs endereos da
instruo devem estar implcitos. Uma maneira de implementao para atingir este
objetivo utilizar uma arquitetura baseada em stack (pilha). Na pilha, o ltimo item
armazenado o primeiro a ser retirado. Devido a natureza de o ltimo a entrar,
primeiro a sair, a pilha tambm chamada de LIFO (last in, first out). A palavra no topo
da pilha referida como TOS (top of stack). A palavra abaixo do topo da pilha referida
como TOP-1, e assim sucessivamente.
Quando uma ou mais palavras so utilizadas como operandos para uma operao, elas
tem de ser removidas da pilha. A palavra abaixo daquelas que foram consumidas passa
ento a ser o novo TOS. O resultado a ser gerado colocado novamente na pilha,
tornando-se, ento, o novo TOS. Conseqentemente, a pilha fornece um
endereamento implcito tanto dos seus operandos como do destino no qual o
resultado ser armazenado. Por exemplo, a instruo que especifica a instruo de
adio simplesmente
ADD
O resultado da ao, em linguagem de transferncia de registradores :
TOS TOS + (TOS-1).
Assim, no existem registradores ou endereamento explcito de registradores durante
a manipulao de dados na arquitetura de pilha.

O endereamento de memria utilizado nestas arquiteturas para transferncia de


dados. Por exemplo, a instruo:
PUSH X
Resulta em TOS M[X], a transferncia da palavra do endereo X da memria para o
topo da pilha. A correspondente operao
POP X
Resulta em M[X] TOS, a transferncia da entrada do topo da pilha para o endereo
X.
O programa para implementar a mesma expresso aritmtica anterior com instrues
de zero endereo o seguinte:
PUSH A
PUSH B
ADD
PUSH C
PUSH D
ADD
MUL
POP X

TOS M[A]
TOS M[B]
TOS TOS + TOS-1
TOS M[C]
TOS M[D]
TOS TOS + TOS-1
TOS TOS x TOS-1
M[X] TOS

O programa requer oito instrues. Contudo, este programa no utiliza locais de


memria ou registradores para executar instrues de manipulao de dados. Outro
efeito de utilizar tal notao que geralmente o tamanho (em nmero de bits) das
instrues menor quando comparado a outras arquiteturas.

Arquiteturas de endereamento
Os programas apresentados mudam se a maneira como o endereamento dos
operandos restringido, ou ainda se o endereamento memria restrito apenas
para instrues especificas. A seguir, estas variaes sero demonstradas utilizando
como base uma arquitetura de trs endereos, como vista anteriormente. Todavia, elas
podem ser aplicadas a quaisquer arquiteturas de 2 endereos.
Arquitetura memory-to-memory
Esta arquitetura possui apenas registradores de controle, como o PC (Program
Counter). Todos os operandos vem diretamente da memria, e todos os resultados
so enviados diretamente para a memria.
ADD T1, A, B
ADD T2, C, D
MUL X, T1, T2

M[T1] M[A] + M[B]


M[T2] M[C] + M[D]
M[X] M[T1] x M[T2]

Neste caso, considerando a busca (fetch) das instrues, dos operandos e o


armazenamento dos resultados, este programa requer 12 acessos a memria. A
arquitetura memory-to-memory no utilizada atualmente.

Arquitetura register-to-register (load/store)


Em contraste com a arquitetura anterior, a arquitetura register-to-register permite
somente uma referncia memria por instruo e a restringe dois tipos de
instrues: de carga e armazenamento (load e store). Esta arquitetura requer uma boa
quantidade de registradores, pois todas as manipulaes de dados pelas instrues
utilizam operandos em registradores. Esta arquitetura utilizada em processadores da
famlia MIPS, por exemplo. Com esta arquitetura, o programa para avaliar a expresso
aritmtica do exemplo :
LD R1, A
LD R2, B
ADD R3, R1, R2
LD R1, C
LD R2, D
ADD R1, R1, R2
MUL R1, R1, R3
ST X, R1

R1
R2
R3
R1
R2
R1
R1
M[X]

M[A]
M[B]
R1 + R2
M[C]
M[D]
R1 + R2
R1 x R3
R1

Arquitetura register-to-memory
uma variao das duas arquiteturas anteriores, onde ambas referncias (para
memria e para registradores) podem ser utilizadas em uma mesma instruo. O
tamanho do programa e o nmero de acessos a memria tende a ser intermedirio
entre as duas arquiteturas anteriores. Um exemplo de uma instruo de 2 endereos
com um nico endereo a memria permitido :
ADD R1, A

R1 R1 + M[A]

Este tipo de arquitetura bastante encontrado em arquiteturas atuais, como na famlia


X86.

10

Você também pode gostar