Capítulo 1 - Introdução
1.1 Organização Estruturada de Computadores
Esta secção apresenta a ideia central do livro: existe um grande desfasamento entre aquilo que é conveniente para as pessoas e o que é conveniente para as máquinas. Os computadores executam instruções muito simples, enquanto os humanos necessitam de formas mais abstratas e expressivas de programação. Para colmatar esta diferença, surgem níveis de abstração (ou máquinas virtuais), cada um construído sobre o anterior.
1.1.1 Linguagens, Níveis e Máquinas Virtuais
-
A máquina real só executa a sua linguagem de máquina (L0).
-
Criam-se linguagens mais convenientes (L1, L2, … Ln), que podem ser:
-
Traduzidas para L0 (através de compiladores).
-
Interpretadas por um programa escrito em L0.
-
-
Esta hierarquia pode ser vista como uma pilha de máquinas virtuais:
-
M0 → hardware real (L0).
-
M1, M2, … Mn → máquinas virtuais (L1, L2, … Ln).
-
-
Cada nível acrescenta abstrações mais próximas do utilizador, escondendo detalhes das camadas inferiores.
1.1.2 Máquinas Multinível Contemporâneas
-
Os computadores modernos implementam vários níveis, geralmente até seis:
-
Nível lógico digital – portas, registos e circuitos.
-
Microarquitetura – registos, ALU, datapath; pode ser controlada por microprogramação ou hardware.
-
ISA (Instruction Set Architecture) – instruções que os programadores veem (manual de linguagem de máquina).
-
Nível do sistema operativo – acrescenta multitarefa, gestão de memória e chamadas de sistema.
-
Linguagem assembly – forma simbólica de programação, traduzida por assemblers.
-
Linguagens de alto nível – como C, C++, Java, Python; traduzidas (compiladores) ou interpretadas.
-
-
A distinção entre arquitetura (o que é visível para o programador) e implementação (como é realizado em hardware) é destacada.
1.1.3 Evolução das Máquinas Multinível
-
Anos 1940: dois níveis – lógica digital e ISA. O hardware executava diretamente o conjunto de instruções.
-
1951 – Microprogramação (Wilkes): introdução de um nível intermédio que simplificava o hardware e aumentava a fiabilidade.
-
Década de 1960: introdução dos sistemas operativos, que passaram a oferecer chamadas de sistema e novos níveis de abstração.
-
Décadas de 1960-70: explosão de instruções adicionadas via microcódigo (ex.: multiplicação, vírgula flutuante, manipulação de strings).
-
Década de 1980 em diante: tendência para simplificação com arquiteturas RISC, eliminando parte da microprogramação.
-
O limite entre hardware e software tornou-se fluido: o que hoje é software pode ser amanhã hardware, e vice-versa.
1.2 Marcos na Arquitetura de Computadores
Esta secção apresenta a evolução histórica dos computadores digitais, desde os primeiros dispositivos mecânicos até aos modernos processadores.
-
Geração zero (1642–1945) – computadores mecânicos (Pascal, Leibniz, Babbage, Zuse, Atanasoff, Stibbitz, Aiken).
-
1.ª geração (1945–1955) – válvulas, como o ENIAC e IAS (Von Neumann). Surge a arquitetura de programa armazenado.
-
2.ª geração (1955–1965) – transístores, máquinas como o PDP-1, PDP-8, IBM 7094 e CDC 6600. Aparece a ideia de minicomputadores.
-
3.ª geração (1965–1980) – circuitos integrados; IBM System/360 introduz famílias de computadores compatíveis; DEC PDP-11 domina os minicomputadores.
-
4.ª geração (1980–…) – VLSI (Very Large Scale Integration), computadores pessoais, RISC, processadores superscalar, FPGAs, paralelismo.
-
5.ª geração (anos 1990–atualidade) – computadores móveis, portáteis e embebidos, foco em baixo consumo de energia e ubiquidade.
1.3 Exemplos de Computadores
Aqui são apresentados exemplos concretos para ilustrar os conceitos teóricos:
-
IBM 360 – família de computadores compatíveis, marco na padronização da arquitetura.
-
Intel 8080 – primeiro microprocessador de uso geral, precursor da linha x86.
-
VAX (DEC) – superminicomputador de 32 bits, muito influente nos anos 1980.
-
SPARC (Sun Microsystems) – arquitetura RISC, exemplo da viragem para conjuntos de instruções mais simples.
-
Intel Pentium – processador superscalar, base dos PCs modernos.
O objetivo desta secção é mostrar como os conceitos de máquinas multinível se materializam em sistemas reais, cada um representando um avanço técnico e comercial na história da computação.
1.4 Famílias de Computadores de Exemplo
O autor apresenta três arquiteturas de conjunto de instruções (ISAs) que servirão como exemplos ao longo do livro: x86, ARM e AVR.
-
x86: Presente na maioria dos computadores pessoais (Windows, Linux e até Macs) e em servidores. É relevante porque os leitores usam PCs diariamente e porque os servidores suportam grande parte da Internet.
-
ARM: Domina o mercado móvel. É usado em smartphones, tablets e muitos outros dispositivos de baixo consumo energético.
-
AVR: Microcontroladores de baixo custo, comuns em sistemas embebidos. Estão presentes em eletrodomésticos, automóveis, televisores, etc., tornando-se invisíveis para o utilizador final mas essenciais no funcionamento de inúmeros aparelhos.
A secção mostra que, apesar das diferenças de propósito e complexidade, todas estas arquiteturas partilham conceitos fundamentais de organização computacional.
1.5 Estrutura do Livro
Esta secção explica a organização dos capítulos e como o conteúdo será desenvolvido.
-
O livro trata principalmente de computadores multinível e da sua organização.
-
O foco está em quatro níveis principais:
-
Nível da lógica digital – portas, registos e circuitos básicos.
-
Nível da microarquitetura – registos, ALU, datapath, interpretadores de instruções.
-
Nível da ISA (Instruction Set Architecture) – conjunto de instruções visível ao programador.
-
Nível da máquina do sistema operativo – chamadas de sistema, multitarefa, gestão de recursos.
-
-
A abordagem é bottom-up: começa-se pelos níveis inferiores, mais simples, e sobe-se para os superiores.
-
Os capítulos subsequentes apresentam exemplos concretos retirados das três arquiteturas de referência (x86, ARM e AVR).
Esta estrutura facilita a compreensão, já que cada nível depende das características do anterior e porque o ensino gradual reduz a complexidade.
1.6 Esquema do Livro
O objetivo é esclarecer o que será estudado e com que perspetiva.
-
O livro foca-se em conceitos fundamentais, e não em detalhes técnicos ou fórmulas matemáticas pesadas.
-
Serão analisados aspetos como:
-
Estrutura geral de cada nível.
-
Tipos de dados e instruções disponíveis.
-
Organização e endereçamento da memória.
-
Métodos de implementação de cada nível.
-
-
O autor realça que cada arquitetura resulta de compromissos e decisões arbitrárias. Não existe um “design perfeito”; cada escolha depende de contexto histórico, económico e tecnológico.
-
As arquiteturas x86, ARM e AVR são usadas como exemplos comparativos, permitindo perceber alternativas e diferentes caminhos de projeto.
-
O leitor é incentivado a adotar uma visão crítica, questionando porque é que certas soluções foram escolhidas e como poderiam ter sido feitas de forma diferente.