Organização Básica de Sistemas Computacionais

Como um computador é estruturado por dentro

Organização de Computadores

O que é um sistema computacional?

Um sistema computacional é um conjunto integrado de componentes de hardware e software que, trabalhando juntos, recebem dados, processam informações e produzem resultados úteis.

Toda tarefa de um computador, por mais complexa que pareça (um jogo, um navegador, uma planilha), reduz-se a três ações fundamentais: entrada de dados, processamento e saída de resultados — com armazenamento dando suporte a todo o processo.


Entrada

Processamento

Saída

Organização x Arquitetura

São duas perspectivas diferentes sobre a mesma máquina. É a distinção clássica feita por Stallings:

Arquitetura

Atributos visíveis ao programador, que afetam diretamente a execução de um programa.

Exemplos: conjunto de instruções, número de bits para representar dados, modos de endereçamento, registradores disponíveis.

Organização

Como os recursos são implementados fisicamente para concretizar a arquitetura.

Exemplos: sinais de controle, tecnologia de memória usada, se há multiplicador em hardware, tamanho real da cache.

Analogia: a arquitetura é "o que" a máquina faz (o contrato); a organização é "como" ela faz. Várias organizações podem implementar a mesma arquitetura — é por isso que processadores de gerações diferentes rodam o mesmo software.

O Modelo de von Neumann

Proposto em 1945, é a base de praticamente todos os computadores atuais. Sua ideia central é o programa armazenado: instruções e dados ficam na mesma memória, permitindo que o computador seja reprogramado sem alterar o hardware.


Entrada

CPU
(UC + ULA)

Memória

Saída

Gargalo de von Neumann: como instruções e dados compartilham o mesmo barramento até a memória, a CPU frequentemente espera pela memória. Esse limite motivou o surgimento das memórias cache e da arquitetura Harvard (memórias separadas para dados e instruções).

Os componentes funcionais

ComponenteFunção
Unidade Central de Processamento (CPU) O "cérebro". Busca, decodifica e executa instruções. Contém a Unidade de Controle (UC) e a Unidade Lógica e Aritmética (ULA).
Memória Principal Armazena temporariamente instruções e dados em uso. Volátil (RAM).
Dispositivos de Entrada Convertem informação do mundo externo em dados digitais (teclado, mouse, sensores).
Dispositivos de Saída Convertem dados digitais em informação para o usuário (monitor, impressora, alto-falante).
Barramentos (Bus) Canais de comunicação que interligam todos os componentes.

Dentro da CPU: UC e ULA

Unidade de Controle (UC)

Coordena e sincroniza todas as operações. Não processa dados — ela comanda: decide o que cada parte deve fazer e quando, gerando os sinais de controle.

Unidade Lógica e Aritmética (ULA)

Executa as operações aritméticas (soma, subtração) e lógicas (AND, OR, NOT, comparações). É onde o "cálculo" realmente acontece.

Registradores: pequenas memórias ultrarrápidas dentro da CPU que guardam os dados sendo manipulados no instante. São o nível mais alto (e mais veloz) da hierarquia de memória.

Barramentos: as "estradas" de dados

Um barramento é um conjunto de fios que transporta informação entre componentes. Existem três tipos lógicos:

BarramentoO que carregaSentido
DadosAs informações trocadas (instruções, valores)Bidirecional
EndereçosA posição de memória/dispositivo a acessarUnidirecional (CPU → memória)
ControleSinais de comando (leitura, escrita, clock, interrupção)Bidirecional

A largura do barramento de dados (8, 16, 32, 64 bits) define quantos bits trafegam de uma vez. A largura do barramento de endereços define quanta memória pode ser endereçada: com n linhas, o máximo é 2n endereços. Por isso processadores de 32 bits endereçam até 4 GB.

O Ciclo de Instrução (Busca-Decodificação-Execução)

É o ritmo fundamental da máquina, repetido bilhões de vezes por segundo:

  • 1. Busca (Fetch): a UC lê da memória a próxima instrução, apontada pelo registrador PC (Program Counter).
  • 2. Decodificação (Decode): a UC interpreta o código da instrução e descobre qual operação realizar.
  • 3. Execução (Execute): a ULA ou outro recurso realiza a operação; o resultado é guardado em registrador ou memória.
PC → endereço da
  próxima instrução

loop:
  instr = MEM[PC]  // fetch
  decode(instr)    // decode
  execute(instr)   // execute
  PC = PC + 1
  goto loop

Hardware, Software e as camadas

Um sistema computacional é organizado em camadas, da mais física à mais próxima do usuário:

CamadaExemplo
Aplicativos do usuárioNavegador, editor de texto, jogos
Software de sistema / UtilitáriosCompiladores, drivers, antivírus
Sistema OperacionalWindows, Linux, Android
Firmware / BIOS-UEFIInicialização e controle de baixo nível
HardwareCPU, memória, dispositivos

Cada camada usa os serviços da camada inferior e oferece serviços à superior. O usuário interage com o topo sem precisar conhecer os detalhes elétricos da base — isso é abstração.

O que torna um computador "rápido"?

Aprofundamento: a máquina multinível

Tanenbaum descreve o computador como uma máquina de níveis: cada nível é uma máquina virtual que esconde os detalhes do nível inferior. Programar em um nível dispensa conhecer como ele é realizado abaixo — é a ideia de abstração em camadas.

NívelCamadaComo é executado
5Linguagem de alto nível (C, Java, Python)Tradução (compilador) ou interpretação
4Linguagem de montagem (Assembly)Tradução pelo montador
3Máquina do sistema operacionalParcialmente interpretado pelo SO
2Arquitetura do conjunto de instruções (ISA)Interpretado pelo microprograma ou hardware
1Microarquitetura (datapath + microprograma)Executado diretamente pelo hardware
0Lógica digital (portas, flip-flops)Eletrônica física

A ISA (nível 2) é a fronteira crítica: é o "contrato" estável que permite que software escrito hoje rode em processadores futuros, mesmo que a microarquitetura (nível 1) mude completamente.

Aprofundamento: dentro da microarquitetura

Abaixo da ISA, a microarquitetura organiza o processador em duas partes que cooperam a cada ciclo de clock:

Caminho de dados (datapath)

Os recursos por onde os dados fluem e são transformados: ULA, banco de registradores, multiplexadores, barramentos internos e registradores de estágio (MAR, MBR, IR).

Unidade de controle

Gera, a cada ciclo, os sinais de controle que abrem/fecham os caminhos do datapath (qual operação a ULA faz, qual registrador é lido/escrito, se a memória lê ou grava).

Duas formas de implementar o controle: cabeado (hardwired) — lógica combinacional fixa, rápida, típica de RISC; e microprogramado — cada instrução da ISA vira uma sequência de microinstruções armazenadas numa memória de controle, mais flexível e usado historicamente em CISC.

Aprofundamento: a máquina IAS e a arquitetura Harvard

O artigo de von Neumann (1945) deu origem à máquina IAS (Princeton, concluída em 1952), modelo de quase toda CPU posterior. Ela já definia uma estrutura de registradores que persiste hoje:

RegistradorFunção (já na IAS)
PCEndereço da próxima instrução
MAREndereço a acessar na memória
MBRDado lido/escrito na memória
IRInstrução em execução
AC / MQOperandos e resultados da ULA

A IAS usava palavras de 40 bits e podia guardar duas instruções de 20 bits por palavra. O conceito-chave permanece: instruções e dados na mesma memória, indistinguíveis a não ser pelo contexto.

A alternativa é a arquitetura Harvard: memórias e barramentos separados para instruções e dados, permitindo buscá-los simultaneamente. CPUs modernas são Harvard modificada — von Neumann na memória principal, mas caches L1 separadas de instrução e de dados.

Aprofundamento: medindo desempenho cientificamente

O desempenho de uma CPU não se resume ao clock. A equação fundamental do tempo de CPU reúne os três fatores que realmente importam:

TCPU = IC × CPI × Tclock

IC    = nº de instruções executadas
CPI   = ciclos médios por instrução
Tclock = duração do ciclo (= 1 / frequência)

Cada fator é influenciado por um fator de projeto: a ISA e o compilador mexem no IC; a microarquitetura (pipeline, cache) mexe no CPI; a tecnologia do circuito mexe no Tclock. Métricas como MIPS e FLOPS são derivadas, mas enganam entre arquiteturas diferentes — por isso usam-se benchmarks padronizados (SPEC CPU) com média geométrica para comparar máquinas de forma justa.

Aprofundamento: a Lei de Amdahl

Quando se acelera apenas parte de um sistema, o ganho global é limitado pela fração que não foi acelerada. Esse é o princípio que rege qualquer otimização — inclusive o paralelismo.

Speedup = 1 / ( (1 − f) + f / s )

f = fração afetada pela melhoria
s = aceleração dessa fração

Exemplo: se 90% de um programa é paralelizável (f = 0,9) e usamos infinitos núcleos (s → ∞), o speedup máximo é 1 / (1 − 0,9) = 10×. Os 10% sequenciais impõem o teto.

Conclusão científica: a parte serial domina. Vale mais reduzir o trecho sequencial do que adicionar processadores indefinidamente.

Aprofundamento: Moore, Dennard e a virada multinúcleo

Glossário do tópico

CPUUnidade Central de Processamento; executa as instruções.
UCUnidade de Controle; coordena as operações.
ULAUnidade Lógica e Aritmética; faz cálculos e comparações.
PCProgram Counter; aponta a próxima instrução.
BarramentoConjunto de fios que conecta os componentes.
von NeumannModelo de programa armazenado; instruções e dados na mesma memória.
MicroarquiteturaImplementação da ISA: datapath + unidade de controle.
CPICiclos por instrução; fator central do desempenho.
Lei de AmdahlO ganho global é limitado pela fração não acelerada (parte serial).

Exercícios resolvidos

1. Explique, com um exemplo, a diferença entre arquitetura e organização de um computador.

Ver solução
Arquitetura são os atributos visíveis ao programador (ex.: o conjunto de instruções, ter ou não a instrução de multiplicação). Organização é como isso é implementado fisicamente (ex.: a multiplicação ser feita por um circuito dedicado ou por somas repetidas). Duas CPUs com a mesma arquitetura rodam o mesmo software, mesmo tendo organizações internas diferentes.

2. Um barramento de endereços possui 24 linhas. Qual a quantidade máxima de memória endereçável?

Ver solução
Com n linhas, endereçam-se 2n posições. 224 = 16.777.216 endereços = 16 MiB (considerando 1 byte por endereço).

3. Um programa executa 109 instruções, com CPI médio de 2, em uma CPU de 2 GHz. Qual o tempo de execução?

Ver solução
TCPU = IC × CPI × Tclock. Tclock = 1 / (2×109) = 0,5 ns. Logo T = 109 × 2 × 0,5 ns = 109 ns = 1 segundo.

4. Um programa é 80% paralelizável. Qual o ganho máximo (speedup) ao usar 4 núcleos, pela Lei de Amdahl?

Ver solução
Speedup = 1 / ((1 − f) + f/s) = 1 / ((1 − 0,8) + 0,8/4) = 1 / (0,2 + 0,2) = 2,5×. Note que, mesmo com infinitos núcleos, o teto seria 1/0,2 = 5×.

Resumindo

Um computador é um sistema de camadas: hardware organizado segundo o modelo de von Neumann (CPU, memória, E/S e barramentos), executando o ciclo de busca-decodificação-execução, controlado por software que abstrai a complexidade para o usuário.

Voltar aos Tópicos