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