Capítulo 1: Abstrações e Tecnologia de Computadores
1.1 Introdução
O capítulo introduz a importância dos sistemas computacionais na sociedade moderna e a constante evolução da tecnologia. São destacados exemplos de avanços tecnológicos, como a computação em automóveis, telemóveis, o Projeto Genoma Humano e a Web. Além disso, são apresentadas três grandes categorias de aplicações de computadores:
- Computadores Pessoais (PCs) – Focados na performance para um único utilizador a baixo custo.
- Servidores – Computadores de grande capacidade, projetados para múltiplos utilizadores e aplicações complexas.
- Computadores Embebidos – Presentes em eletrodomésticos, automóveis, entre outros, com requisitos específicos de desempenho e consumo energético.
O capítulo também discute a transição da era do PC para a era dos dispositivos móveis pessoais (PMDs) e a ascensão da computação na nuvem (Cloud Computing).
1.2 As Sete Grandes Ideias da Arquitetura de Computadores
O capítulo apresenta sete princípios fundamentais da arquitetura de computadores, que orientam o design e a evolução dos sistemas computacionais:
- Uso de Abstração para Simplificar o Design – Permite projetar sistemas complexos de forma modular.
- Fazer com que o Caso Comum seja Rápido – Otimização das operações mais frequentes para aumentar o desempenho.
- Desempenho via Paralelismo – Execução de múltiplas operações simultaneamente para melhorar a velocidade de processamento.
- Desempenho via Pipeline – Divisão da execução de instruções em etapas sequenciais para maior eficiência.
- Desempenho via Previsão – Técnicas que antecipam resultados para reduzir atrasos computacionais.
- Hierarquia de Memória – Uso de múltiplos níveis de memória (cache, RAM, armazenamento) para otimizar acesso a dados.
- Confiabilidade via Redundância – Implementação de mecanismos para garantir funcionamento contínuo mesmo em caso de falhas.
1.3 Por baixo do seu Programa
O software é organizado em camadas hierárquicas, com as aplicações no topo e o hardware na base. Duas camadas fundamentais do software são:
- Sistemas Operativos (SO) – Gerem recursos do computador e fornecem serviços como manipulação de ficheiros e controlo de dispositivos.
- Compiladores – Traduzem programas escritos em linguagens de alto nível (como C ou Java) para instruções que o hardware pode executar.
A arquitetura de computadores é baseada numa linguagem binária simples, com instruções representadas por números em base 2. A introdução de compiladores e linguagens de alto nível revolucionou a programação, tornando-a mais acessível e eficiente.
1.4 Por Dentro do Computador
Os computadores são compostos por cinco componentes principais:
- Entrada (Input) – Dispositivos como teclados e sensores que inserem dados no sistema.
- Saída (Output) – Dispositivos como monitores e impressoras que exibem os resultados do processamento.
- Processador (CPU) – Unidade que executa instruções e controla a operação do sistema.
- Memória – Armazena dados e programas temporariamente durante a execução.
- Dispositivos de Armazenamento – Guardam dados permanentemente (discos rígidos, SSDs, memória flash).
Os dispositivos modernos também incluem ecrãs táteis (touchscreen), sensores e conectividade sem fios.
1.5 Tecnologias para Construção de Processadores e Memória
Os avanços tecnológicos permitiram a evolução dos processadores e memórias ao longo do tempo. O transistor, um interruptor eletrónico, é o componente fundamental dos circuitos integrados (chips), que contêm milhões ou bilhões desses dispositivos.
A Lei de Moore previa a duplicação da densidade dos transistores a cada dois anos, impulsionando melhorias no desempenho dos computadores. No entanto, essa tendência tem desacelerado recentemente devido a limitações físicas.
A fabricação de chips envolve um processo complexo que inclui:
- Produção de lingotes de silício
- Corte em wafers
- Aplicação de múltiplas camadas de circuitos
- Testes e embalagem dos chips
A eficiência na fabricação de chips influencia diretamente o custo dos dispositivos.
1.6 Desempenho
O desempenho de um computador pode ser medido por diversos critérios, como a rapidez na execução de tarefas ou a capacidade de processar múltiplos trabalhos simultaneamente. Para avaliar o desempenho, são utilizados benchmarks, que testam diferentes aspectos do hardware e software.
1.7 A Barreira de Energia (The Power Wall)
O aumento da frequência dos processadores levou a um consumo excessivo de energia e geração de calor, limitando os ganhos de desempenho. Para superar essa barreira, os designers passaram a focar-se em eficiência energética e computação paralela.
1.8 A Mudança para Multiprocessadores
Devido às limitações da velocidade do clock, a indústria passou a adotar processadores multinúcleo (multicore), que permitem a execução paralela de múltiplas tarefas. Isso exige que os programadores desenvolvam software que aproveite essa arquitetura.
1.9 Benchmarks: Avaliação do Intel Core i7
Para medir o desempenho real de um processador, são utilizados benchmarks, que são conjuntos de testes padronizados. O capítulo apresenta um estudo de caso do desempenho do Intel Core i7 em diversas aplicações.
1.10 Acelerando Computações: Multiplicação de Matrizes em Python
O capítulo ilustra como técnicas de otimização podem melhorar o desempenho de cálculos matemáticos em linguagens de alto nível, como Python.
1.11 Falácias e Armadilhas
Os autores alertam sobre equívocos comuns no design de computadores, como:
- Assumir que maior frequência de clock significa automaticamente melhor desempenho.
- Acreditar que um processador mais rápido melhorará o desempenho de qualquer programa.
1.12 Considerações Finais
O capítulo reforça a importância da compreensão da arquitetura de computadores para programadores e engenheiros, destacando que a evolução tecnológica continua a moldar o futuro da computação.