01Fundamentos

A única ideia que separa todo computador que você já usou daquela máquina do tamanho de uma sala que precisava ser recabeada fisicamente, à mão, toda vez que alguém queria que ela resolvesse um problema diferente.

Capítulo
1 of 9
Leitura
20 min

Capítulo 1 é grátis. Para continuar pelos capítulos 2–9, sign in or create an account and unlock Fundamentos for $24.99.

Learn

Um computador que precisava ser recabeado para mudar de ideia

O ENIAC, construído entre 1943 e 1945 na Universidade da Pensilvânia para calcular tabelas de trajetória de artilharia em tempo de guerra, foi o primeiro computador em grande escala capaz de funcionar em velocidade eletrônica, sem partes mecânicas para desacelerá-lo. Pelos padrões de tudo que veio antes dele, era extraordinário. Pelo padrão que este capítulo está prestes a apresentar, ainda faltava algo fundamental.

O ENIAC não tinha como armazenar um programa na memória. Para fazê-lo resolver um problema diferente, técnicos o reconfiguravam fisicamente, conectando cabos de ligação entre componentes e ajustando à mão centenas de interruptores, um arranjo físico específico por cálculo. O próprio relato do Computer History Museum sobre a máquina é direto quanto ao custo disso: “Projetar a configuração correta para cada novo problema, e depois conectar os fios e ajustar os interruptores, levava muitos dias.”

Leia essa frase com atenção, porque ela é o capítulo inteiro numa linha só. Mudar o que o ENIAC calculava não era uma decisão de software tomada em minutos, era um projeto físico de recableamento medido em dias, realizado por pessoas que tinham que pensar todo o cálculo como um diagrama de fiação literal antes de tocar num único cabo.

Computer History Museum, ENIAC, https://www.computerhistory.org/revolution/birth-of-the-computer/4/78.

Explore

A ideia que tornou o recableamento desnecessário, para sempre

A solução que tornou obsoleta a reprogramação ao estilo ENIAC se chama conceito de programa armazenado: em vez de representar um programa como um arranjo físico de fios, representá-lo como dados (o mesmo tipo de dados binários que a máquina já armazena e manipula) e manter esses dados na própria memória do computador, bem ao lado de quaisquer números ou textos com os quais o programa deva trabalhar.

Assim que as instruções passam a ser apenas dados na memória, “mudar o programa” deixa de ser uma tarefa de hardware e vira uma tarefa de carregamento de dados: carregam-se valores binários diferentes na memória, e o computador roda um programa diferente, no tempo que leva para ler essa memória, e não no tempo que leva para recabear uma sala cheia de equipamentos. Essa única ideia é o motivo de um computador moderno conseguir rodar um processador de texto de manhã e um videogame à tarde sem que ninguém toque na fiação interna dele.

Vale a pena refletir sobre o quão estranha essa ideia realmente é, porque a familiaridade desgastou essa estranheza. Um programa armazenado como dados pode, em princípio, ser examinado, copiado, modificado (até modificar a si mesmo) usando exatamente as mesmas operações que o computador já usa para examinar, copiar e modificar qualquer outro dado. Instruções e dados não são dois tipos diferentes de coisa para um computador de programa armazenado, são o mesmo tipo de coisa, distinguidos só por como o processador está interpretando-os no momento.

Verificação rápida

Por que o conceito de programa armazenado eliminou o processo de reprogramação de dias que o ENIAC exigia?

Learn

Um ciclo, rodando continuamente, é basicamente o que um computador é

A arquitetura construída em torno do conceito de programa armazenado (hoje chamada arquitetura de von Neumann, em homenagem ao matemático John von Neumann, que a descreveu num influente relatório de 1945) organiza um computador em um pequeno número de partes que cooperam entre si: uma unidade central de processamento contendo uma unidade de controle e uma unidade lógica e aritmética, uma memória compartilhada entre instruções e dados, e mecanismos de entrada/saída ligando a máquina ao mundo externo.

O que essas partes de fato fazem, repetidamente, se chama ciclo de busca-decodificação-execução. Busca: a unidade de controle lê a próxima instrução da memória, no endereço contido num registrador chamado contador de programa. Decodificação: a unidade de controle interpreta o padrão binário dessa instrução para determinar qual operação ela especifica. Execução: a unidade lógica e aritmética realiza essa operação, e o resultado é armazenado de volta na memória ou enviado para a saída.

Depois o ciclo se repete, continuamente, enquanto o computador roda, o que é uma descrição realmente completa do que acontece, no nível mais baixo, dentro de literalmente todo computador de propósito geral construído sobre essa arquitetura, de um mainframe dos anos 1950 ao dispositivo em que este curso está sendo lido. Tudo o mais complicado que um computador faz é esse ciclo, executado um número enorme de vezes, sobre instruções e dados que foram eles mesmos produzidos por execuções anteriores desse mesmo ciclo.

Von Neumann architecture and the fetch-decode-execute cycle, https://diveintosystems.org/book/C5-Arch/von.html.

O ciclo de busca-decodificação-execução

Busca
A unidade de controle lê a próxima instrução da memória
Decodificar
A unidade de controle interpreta qual operação a instrução especifica
Executar
A unidade lógica e aritmética realiza a operação
Armazenar / saída
O resultado é escrito na memória ou enviado para a saída

Esse ciclo se repete continuamente, é o funcionamento completo de um computador de arquitetura von Neumann, descrito no seu nível mais básico.

https://diveintosystems.org/book/C5-Arch/von.html.

Verificação rápida

No ciclo de busca-decodificação-execução, o que determina de qual endereço de memória a unidade de controle busca a próxima instrução?

Real world

Por que tudo se reduz a dois dígitos

O binário (um sistema numérico que usa só 0 e 1) não é uma escolha arbitrária feita por conveniência. Ele corresponde diretamente aos dois estados elétricos estáveis que um circuito digital consegue distinguir de forma confiável: uma tensão lida como “ligado” ou “desligado”, “alta” ou “baixa”. Um computador construído para distinguir de forma confiável dez níveis de tensão diferentes para um sistema decimal seria muito mais sensível a ruído elétrico do que um construído para distinguir apenas dois, que é a razão prática e física pela qual o binário acabou vencendo como a representação que quase todo computador digital de fato usa internamente.

Como tanto instruções quanto dados são, em última instância, armazenados como padrões binários na mesma memória, o conceito de programa armazenado com que este capítulo abriu fica concreto: uma sequência de 0s e 1s na memória pode representar o número 12, a letra “A”, ou uma instrução dizendo ao processador para somar dois registradores, e qual interpretação se aplica depende inteiramente de como o programa em execução naquele momento trata aquela posição específica de memória, não de nada intrínseco aos próprios bits.

Explique

Lido pelo ATLAS

Um colega de classe diz: “O ENIAC e um laptop moderno são basicamente o mesmo tipo de máquina, só que mais rápida.” Usando o material deste capítulo, explique o que há de errado nessa comparação.

Escreva do jeito que você explicaria para alguém um ano atrás de você na escola. Não há nota nem limite de tentativas.

Cenário de missão

Rastreando o que um programa simples realmente faz, ciclo por ciclo

Você está orientando um novo estagiário de engenharia que acabou de aprender a escrever código, mas nunca pensou no que acontece por baixo dele. Ele pede que você explique, concretamente, o que “o computador está fazendo” enquanto um programa simples roda.

Você decide explicar diretamente uma sequência curta de instruções usando o ciclo de busca-decodificação-execução, em vez de descrevê-lo só de forma abstrata.

As decisões são definitivas. Você não poderá mudar uma depois de tomada; refaça a missão se quiser tentar outro caminho.

  1. Decisão 01

    O estagiário pergunta se o computador de alguma forma “entende” o programa inteiro de uma vez, como uma pessoa que lê código.

    Como você responde, usando o material deste capítulo?

Capítulo concluído

O que você agora entende

  • Você consegue explicar o conceito de programa armazenado e por que representar instruções como dados na memória eliminou a necessidade do recableamento físico ao estilo ENIAC.
  • Você consegue descrever os componentes da arquitetura de von Neumann e percorrer passo a passo o ciclo de busca-decodificação-execução.
  • Você consegue explicar por que a representação binária corresponde naturalmente aos dois estados elétricos estáveis de um circuito digital.
  • Você consegue descrever por que o ENIAC precisava de dias de reconfiguração física para rodar um programa diferente, usando o próprio relato do Computer History Museum.
  • Você consegue rastrear uma sequência simples de instruções pelo ciclo de busca-decodificação-execução e explicar por que um computador não tem uma compreensão “holística” de um programa em nenhum momento específico.
Fundamentos conteúdo

Continue além do horizonte

Você concluiu o primeiro capítulo grátis. Libere o resto de Fundamentos por $24.99.

$24.99Pagamento único · Acesso vitalício

O pagamento é feito pela Shopify na loja do Mach 9, então nenhum dado de cartão chega a este site.