Arquitetura de John Von Neumann

10 Melhores Livros sobre microprocessadores
Este post faz parte da série Microprocessadores. Leia também os outros posts da série:

Oi pessoal. No artigo anterior eu fiz uma pequena introdução à nossa série, assim como dei uma visão geral de um sistema computacional completo. Hoje vou falar de uma arquitetura de microprocessadores muito particular, chamada Arquitetura de John Von Neumann, uma das pioneiras.

 

 

História

 

Nos primórdios da Computação não exista o conceito de PROGRAMA ARMAZENADO, isto significa que os programas eram desenvolvidos, executados e apresentavam os resultados imediatamente.

 

O conceito de programa armazenado surgiu da necessidade de armazenar programas em um computador, pois, até então, ainda não havia formas de armazenar programas em um computador. John Von Neumann e outros pesquisadores descobriram que, utilizando dispositivos de memória em formas de linha de retardo de mercúrio, poderiam armazenar instruções de programas.

 

Pra nós hoje esse conceito de programa armazenado já está muito bem edificado. Nós codificamos, desenvolvemos software em diversas linguagens de programação, armazenamos nosso código fonte em um HD Externo, ou no HD interno, ou na Nuvem se assim desejarmos. O código executável desses softwares compilado, que está armazenado em algum desses dispositivos, sempre passa pela memória principal, depois pela memória cache e então é executado na CPU.

 

O conceito de programa armazenado surgiu durante o projeto EDVAC e John Von Neumann acabou recebendo a maior parte dos créditos pela definição, mas a verdade é que várias pessoas participaram da construção. John Von Neumann ganhou mais destaque que os outros por ter escrito um relatório sobre o EDVAC, com 101 páginas, descrevendo formalmente o conceito, criando assim uma espécie de guia para a construção de computadores.

 

 

A arquitetura de John Von Neumann

 

A proposta inicial de um computador de programa armazenado, relatada pelo próprio Von Neumann, era dividida em cinco partes:

  • central aritmética;
  • central de controle;
  • memória;
  • gravação;
  • entrada e saída.

 

Primeira Parte Específica - Central Arithmetic (CA): O dispositivo deve realizar as operações elementares da aritmética mais frequentemente, e por este motivo deve ter unidades especializadas apenas para essas operações.

 

Segunda Parte Específica - Control Center (CC): A sequenciação apropriada das operações pode ser executada, de forma mais eficiente, por um controle central.

 

Terceira Parte Específica:

 

Memória (M): Qualquer dispositivo que tiver que executar longas e complicadas sequências de operações precisa ter uma memória considerável.

 

Recording (R): Deve ser capaz de manter contato com a entrada e a saída, que são como os neurônios correspondentes sensoriais e motores do cérebro humano.

 

Quarta Parte Específica - Input (I): É necessário ter unidades para transferência de informações de R para M.

 

Quinta Parte Específica - Outuput (O): É necessário ter unidades para transferência de informações de M para R.

 

Características

 
A arquitetura é composta por três grandes sistemas de hardware: sistema central de processamento, sistema de memória e sistema de entrada/saída. A arquitetura tem a capacidade de executar instruções sequencialmente e possui apenas um caminho de dados entre a UCP e a memória principal, o que é chamado de Gargalo de von Neumann. Atualmente, é claro, isso não existe mais e sofreu uma grande evolução.

 

1. Unidade Central de Processamento (UCP) ou Central Processing Unit (CPU): A CPU deve ser composta por uma unidade de controle (UC), uma unidade lógica aritmética (ULA), vários registradores (memórias internas da CPU) e um  contador de programa (PC);

2. Sistema de Memória Principal;

3. Sistema de Entrada/Saída.

 

Vamos ver agora uma IMAGEM que representa o conceito da Arquitetura de John Von Neumann. Observe a Figura 1:

 

Arquitetura de John Von Neumann
Figura 1: Arquitetura de John Von Neumann

 

A Figura 1 apresenta a Arquitetura de John Von Neumann representando os três grandes sistemas de hardware. A seguir descrevo as funções dos componentes ilustrados na Figura 1.

 

FUNÇÃO DA CPU: A unidade central de processamento tem como função executar programas que estão armazenados na memória principal, buscar as instruções desses programas, examinar essas instruções e executar as instruções uma após a outra (sequência).

 

FUNÇÃO DA UC: A unidade de controle tem como função buscar instruções na memória principal e determinar o tipo dessas instruções.

 

FUNÇÃO DA ULA: A unidade lógica aritmética tem como função efetuar operações aritméticas e efetuar operações booleanas (E, OU, NOT, etc);

 

FUNÇÃO DOS REGISTRADORES: Os registradores da unidade central de processamento são memórias de altíssima velocidade que armazenam resultados temporários. Alguns registradores têm uma função e um tamanho específico (em bits e/ou bytes) e são lidos/escritos em alta velocidade pois são internos à CPU. A CPU não consegue manter todos os valores manipulados por um programa apenas em registradores, por isso necessita de uma memória para o armazenamento das informações.

 

FUNÇÃO DO PC: A função do Contador de programa, ou Programm Counter, é o de indicar a próxima instrução a ser buscada para execução pela CPU. Esse é um exemplo de registrador com função específica.

 

FUNÇÃO DO IR: A função do Registrador de Instrução é o de conter (armazenar) a instrução que está sendo executada no momento. Este é um outro exemplo de registrador com função específica.

 

O Ciclo de Execução

O ciclo de execução diz respeito à forma com que uma instrução é executada pela CPU, os caminhos que ela deve fazer e as unidades funcionais pelas quais ela passará, ou seja, descreve como o hardware trabalha com as instruções que serão executadas. O ciclo de execução de Von Neumann é simples e normalmente é citado como BUSCA-DECODIFICAÇÃO-EXECUÇÃO, pois é exatamente isto o que ocorre: busca uma instrução, a decodifica e a executa. Vamos ver um algoritmo passo a passo que ilustra a execução de uma instrução aritmética (que faz parte de um programa executável) em máquinas Von Neumann:

 

1. A unidade de controle busca a próxima instrução do programa na memória principal;
2. O contador de programa é usado pela unidade de controle para determinar onde a instrução está localizada;
3. A instrução é decodificada para uma linguagem que a unidade lógica aritmética possa entender;
4. Os operandos de dados requeridos para executar a instrução são carregados da memória e colocados em registradores;
5. A unidade lógica aritmética executa a instrução e coloca os resultados em registradores ou na memória.

 

Isso pode ser representado por um algoritmo que é ilustrado na Figura 2:

 

ciclo de execução
Figura 2: Ciclo de execução

 

O algoritmo começa buscando, na memória principal, a próxima instrução do programa que será executada. A unidade de controle é responsável por isso. O Contador de programa deve ser incrementado para que a próxima instrução a ser executada seja encontrada. Em seguida a instrução deve ser decodificada, identificando primeiramente o seu código. Se a instrução tiver Operandos, como em uma operação aritmética, então, é necessário buscar esses operandos (valores). Para isso é preciso calcular o endereço do operando, para saber onde ele se encontra na memória e, somente depois pegar esse valor e armazenar em registradores para manipulação. Quando os operandos terminarem de ser buscados e armazenados, somente então a operação é executada pela Unidade Lógica Aritmética. Se a instrução não tiver operandos, a instrução simplesmente é executada logo após a avaliação da condição.

 

 

Conclusão

 

A Arquitetura de John Von Neumann é referência nos estudos sobre Microprocessadores e Arquitetura. Por mais que esse tipo de sistema computacional não seja mais utilizado, foi ele o precursor de tudo o que conhecemos hoje. Para podermos avançar e evoluir, é muito importante conhecer o passado, o que nos levou a estar no ponto onde estamos e, o que podemos fazer para melhorar ainda mais. Caso queiram contribuir, ou se tiverem dúvidas, por favor, deixem nos comentários. Muito Obrigada e até o próximo artigo.

 

 

Referências

 

MONTEIRO, Mario A. Introdução a Organização de Computadores. 5ª ed. Rio de Janeiro: LTC, 2007

 

TANENBAUM, Andrew S. Organização Estruturada de Computadores. 5ª ed. São Paulo: Pearson Prentice Hall, 2010.

 

STALLINGS, William. Arquitetura e Organização de Computadores. 8ª ed. São Paulo: Pearson Prentice Hall, 2010.

 

NULL, Linda. Princípios Básicos de Arquitetura e Organização de Computadores. 2ª ed. Porto Alegre: Bookman, 2010.

 

LORIN, Harold. Introdução a Arquitetura e Organização de Computadores. Rio de Janeiro: Campus, 11985.

 

PATTERSON, David A.; HENNESSY, John L. Organização e Projeto de Computadores: A Interface Hardware e Software. 2ª ed. Rio de Janeiro: LTC, 2000.

 

WEBER, Raul Fernando. Fundamentos de Arquitetura de Computadores. 3ª ed. Porto Alegre, RS: Bookman, Instituto de Informática da UFRGS, 2008.

 

HENNESSY, JOHAN L. Arquitetura de Computadores: uma abordagem quantitativa. Rio de Janeiro: Campus, 2003.

 

REBONATO, MARCELO T. Organização de Computadores: notas de aula. Universidade de Passo Fundo.

 

RICARTE, IVAN l. M. Organização de Computadores. Universidade Estadual de Campinas.

Outros artigos da série

<< Visão geral de microprocessadores
Este post faz da série Microprocessadores. Leia também os outros posts da série:
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Elaine Cecília Gatto
Bacharel em Engenharia de Computação. Mestre em Ciência da Computação. Doutoranda em Ciência da Computação. Co-fundarora e Líder das #GarotasCPBr. Pesquisadora Convidada no Grupo de Pesquisa: "Artes em Tecnologias Emergentes" do Programa de Pós Graduação em Design na UNESP Campus Bauru. Cantora, Docente no Magistério Superior, Geek, Nerd, Otaku e Gamer. Apaixonada por Michael Jackson, Macross, Rocky Balboa, Séries, Filmes, Cervejas e Vinhos. Mais informações sobre mim você encontra em: http://lattes.cnpq.br/8559022477811603.
recentes antigos mais votados
Notificar
Francisco Antonio
Visitante
Francisco Antonio

Em primeiro lugar: não é apropriado dizer "fluxograma", no caso, devemos dizer "diagrama de blocos"; muitos acham que é a mesma coisa, porém dizem o seguinte: diagrama de blocos: sequencia de passos em um programa de computador (ou seja o "algoritmo" de um programa); fluxograma: sequencia em que diversos programas interagem para produzir um determinado resultado, exemplo: os programas que devem ser executados para que se produza uma folha de pagamentos em uma empresa; desculpem os mais novos, mas sou um dos últimos "dinossauros" da computação.

Júnior Rosas
Visitante
Júnior Rosas

Eu amei o artigo! Elaine Cecília gostaria de entrar em contato com você por e-mail, participo do programa Meninas Digitais da Sociedade Brasielira de Computação e adoraria bater um papo com você sobre o mundo geek e as mulheres da computação! Abraços!

Yuri Lucas
Visitante
Yuri Lucas

ajudou muito, parabéns !

Glauber Saldanha
Visitante
Glauber Saldanha

Excelente artigo. Obrigado!

Elaine Cecília Gatto
Visitante
Elaine Cecília Gatto

Eu que agradeço!