<Direto ao Ponto 13> A Arquitetura de von Neumann
- #Informática Básica
Artigos desta série: ( < ) Anterior | Índice | Seguinte ( > )
Olá, dev!
Este é mais um artigo da série DIRETO AO PONTO, que eu estou escrevendo para a DIO. Ele vai tratar da arquitetura de von Neumann, base dos computadores atuais.
Sumário
1. Introdução
2. Arquitetura x Organização do computador
3. Arquitetura básica de um computador
4. Considerações finais
5. Referências
1 – Introdução
A NOVA série DIRETO AO PONTO enfoca artigos básicos sobre a programação e é voltada, principalmente, para os iniciantes.
Neste artigo, eu vou apresentar a arquitetura do computador, focando na arquitetura mais comum, a de von Neumann, base dos computadores atuais, e surgida nos anos 40.
Existem outras formas de arquitetura de computadores, umas gerais, outras bem específicas, mas serão tratadas em outro artigo.
2 – Arquitetura x Organização do computador
Eu vou começar tirando uma dúvida que muita gente tem. A arquitetura e organização de computador são a mesma coisa? Existem livros com títulos apenas sobre a arquitetura e outros apenas sobre a organização de computadores, bem como cursos nas faculdades e universidades de tecnologia. Por isso, a dúvida.
No entanto, segundo (Stallings, 2018), os termos são diferentes e cada um tem uma definição específica.
A Arquitetura de computador se refere aos atributos de um sistema visíveis ao programador, possuindo impacto direto sobre a execução lógica de um programa.
Esse termo está associado à arquitetura do conjunto de instruções (“Instruction Set Architecture” – ISA), que define:
· os formatos de instruções;
· códigos de operação da instrução (“opcodes”);
· o conjunto de registradores;
· memória de instruções e de dados;
· efeito das instruções executadas nos registradores e na memória; e
· um algoritmo para o controle da execução das instruções.
Os atributos da arquitetura incluem:
· conjunto de instruções;
· número de bits usados para representar os tipos de dados (números, caracteres etc.);
· mecanismos de Entrada e saída (E/S);
· técnicas para endereçamento de memória.
Já a Organização de computador trata das unidades operacionais e suas interconexões, seguindo as especificações de uma arquitetura.
Por exemplo, no projeto de arquitetura de um computador será decidido se ele terá uma instrução de multiplicação. Para a organização deste computador, será decidido se essa instrução será implementada por uma unidade de multiplicação especial ou por um mecanismo que faça uso repetido da unidade de adição do sistema.
Esta decisão pode levar em consideração:
· previsão da frequência de uso da instrução de multiplicação;
· velocidade relativa das duas técnicas;
· tamanho físico de uma unidade de multiplicação especial;
· custo de uma unidade de multiplicação especial.
Resumindo, o projeto de uma organização de computador deve implementar determinada especificação de arquitetura.
Os fabricantes costumam lançar uma família de modelos de computador, todos com a mesma arquitetura, mas com diferenças na organização. Assim, os diferentes modelos na família apresentam diferenças de preço e de desempenho.
Além disso, uma arquitetura em particular pode se manter por muitos anos, abrangendo diversos modelos diferentes de computador, com sua organização variando conforme as mudanças da tecnologia.
Um exemplo relevante é a arquitetura IBM System/370, introduzida pela primeira vez em 1970, que lançou diversos modelos. Ela sobreviveu, com algumas melhorias, até os dias de hoje como a arquitetura da linha de produtos de mainframe da IBM. A série IBM S/370 foi citada em um artigo anterior da série DIRETO AO PONTO.
No caso dos microcomputadores, a relação entre arquitetura e organização é muito próxima, pois as mudanças na tecnologia influenciam a organização, mas também resultam na introdução de arquiteturas mais poderosas.
Um computador é um sistema complexo, contendo milhões de componentes eletrônicos elementares. Para descrevê-lo com clareza, precisamos reconhecer a sua natureza hierárquica, como um conjunto de subsistemas interrelacionados, de um subnível hierárquico maior até o nível mais baixo, de um subsistema elementar.
Assim, cada nível terá seu próprio projeto, tratando apenas da descrição e projeto dos componentes daquele nível e sua interrelação com os demais níveis. Em cada nível, o projetista só precisa se preocupar com (ver figura abaixo):
· Estrutura: o modo como os componentes são inter-relacionados;
· Função: a operação individual de cada componente como parte da estrutura.
3 – A Arquitetura básica de um computador
A arquitetura dos computadores atuais segue a arquitetura de von Neumann, criada por John von Neumann, em 1945. Ele foi um dos criadores do computador EDVAC, de 1951, já citado no artigo anterior desta série.
Segundo (Carter, 2022), praticamente todos os projetos de computadores modernos são baseados na arquitetura de von Neumann, que estabelece 3 conceitos principais:
· Dados e instruções são armazenados em uma única memória de leitura e escrita;
· O conteúdo dessa memória é endereçável pela localização, sem considerar o tipo de dados contido ali;
· A execução ocorre em um padrão sequencial de uma instrução para a seguinte, a não ser que isso seja modificado explicitamente.
De acordo com (Null, 2024), detalhando a estrutura em blocos funcionais, o hardware desta arquitetura requer, pelo menos, a presença de:
· Uma Unidade Central de Processamento (ou “Central Processing Unit” – CPU), que engloba:
· uma Unidade de Controle;
· uma Unidade Lógica e Aritmética (“Arithmetic Logic Unit” – ALU);
· um conjunto de registradores e um Contador de Programa (“Program Counter”);
· Um sistema de memória principal, que armazena os programas para controlar a operação do computador;
· Um sistema de Entrada e Saída - E/S (“Input/Output” – I/O);
· Um único caminho (barramento – “bus”), físico ou lógico, entre a memória principal e a Unidade de Controle da CPU, que força uma alternância entre os ciclos de instrução e execução.
A figura a seguir ilustra esta arquitetura, que hoje representa a estrutura básica de um processador moderno:
A versão atual para o programa armazenado. Esta arquitetura executa o programa seguindo o ciclo de execução de von Neumann (“fetch–decode–execute cycle” ou ciclo busca-decodifica-executa), que descreve como a máquina funciona, seguindo os passos seguintes:
Carregue o programa em linguagem de máquina (em formato binário);
Inicialize o Contador de Programa
Faça {
Busque (“fetch”) a próxima instrução;
Decodifique (“decode”) o código da instrução (“Opcode”);
Incremente o Contador de programa;
Execute (“execute”) a instrução que foi pega;
}
Enquanto (a instrução de parar (“Stop”) não for executada.
Uma iteração do ciclo é a seguinte:
1. A unidade de controle busca a próxima instrução de programa na memória, usando o contador de programa para determinar onde a instrução está localizada;
2. A instrução é decodificada em uma linguagem que a ALU possa entender;
3. Quaisquer operandos de dados necessários para executar a instrução são buscados na memória e colocados em registradores na CPU;
4. A ALU executa a instrução e coloca os resultados nos registradores ou na memória.
Como o objetivo deste artigo é apresentar uma introdução sobre a arquitetura de computadores, os detalhes de sua implementação e o tratamento dos programas vai ficar para artigos posteriores.
4 – Considerações finais
Este é mais um artigo da série DIRETO AO PONTO, que eu estou escrevendo para a DIO. Ele tratou da arquitetura do computador.
Inicialmente, foi feita a distinção entre arquitetura e a organização de computador, com a arquitetura sendo o conceito e a organização a implementação desta arquitetura.
Depois, foi detalhada a arquitetura de von Neumann, presente na maioria dos computadores atuais modernos.
O assunto é vasto, mas esta é apenas uma introdução, para se começar a entender como um computador funciona dentro da caixa.
Ou, como a gente costuma dizer, os bits e os bytes da computação!
5 – Referências
[1] STALLINGS, William. Arquitetura e Organização de Computadores. 10ª. Ed, Pearson, 2018.
[2] CARTER Nicholas, Schaum’s Outline of Computer Architecture. McGraw-Hill, 2002.
[3] NULL, Linda. Essentials of Computer Organization and Architecture. 6th Edition. Jones & Bartlett Learning, 2024.
Artigos desta série: ( < ) Anterior | Índice | Seguinte ( > )