hello-world-machine

A escada de abstrações

← → no teclado; uma família por tela

antes de tudo

Seis famílias, e o que cada uma faz com o número

Toda peça de um computador cabe numa de seis famílias, nomeadas pelo que fazem com o número. As famílias vêm primeiro; os nomes das peças, depois.

transistores

ligam e desligam: eletroímã, relé, transistor.

portas lógicas

decidem: porta lógica.

somadores

fazem conta: somador, ULA.

registradores

guardam número: flip-flop de nível, flip-flop de borda, registrador, contador, memória (RAM).

instruções

mandam: máquina de registradores, montador, interpretador, compilador, paradigma.

relógio

marca o tempo: oscilador (o relógio).

Em cada família: a ideia principal, as palavras novas explicadas antes de aparecerem, uma aposta, um instrumento ou uma figura, as peças, a matemática daqui lida em voz alta, e uma pergunta no fim. De onde cada coisa vem fica a um clique.

como ler os sinais desta página

E(a, b)

nome em letras retas, com parênteses: uma regra com nome, aplicada ao que está entre parênteses. lê-se: E de a e b.

v, t

letra inclinada minúscula: uma quantidade que varia. lê-se: vê, tê.

st

índice embaixo: em qual instante. lê-se: o estado no instante tê.

10

número em binário: um número escrito só com 0 e 1; cada casa vale o dobro da vizinha. lê-se: um-zero, que vale dois.

v ≥ limiar

≥ e <: maior ou igual; menor. lê-se: vê é maior ou igual ao limiar.

1 ÷ 0,02

÷: dividido por. lê-se: um dividido por zero vírgula zero dois.

família 1 de 6 · transistores ligam e desligam

Uma chave que a eletricidade aciona

Uma máquina que só sabe se há corrente ou não precisa de uma peça que faça isso: a chave. Primeiro o relé; hoje o transistor.

antes, as palavras desta tela

corrente

  • O que é: eletricidade andando por dentro de um fio, como água andando por um cano.
  • Por que existe: é ela que faz a lâmpada acender, o motor girar e, aqui, a chave virar.

chave

  • O que é: uma peça que abre ou fecha o caminho da corrente. O interruptor da luz é uma chave.
  • Por que existe: para ligar e desligar sem cortar o fio.

ímã

  • O que é: um pedaço de ferro que puxa outros pedaços de ferro.
  • Por que existe: puxar sem encostar é o que vai deixar uma corrente mexer numa chave.

antes de mexer, aposte

Se a corrente que manda for fraca demais para puxar a lâmina do relé, a lâmpada do outro lado…

RELÉ · uma corrente fecha a chave da outra corrente de controle bobina a lâmina: aberta = 0, fechada = 1 0 ou 1 a corrente controlada: passa ou não passa nenhum meio-termo

as peças desta família

eletroímã

  • O que é: Um pedaço de ferro com um fio enrolado nele. Com corrente no fio, o ferro vira ímã; sem corrente, deixa de ser.
  • Por que existe: Porque é o jeito de a eletricidade puxar alguma coisa à distância, e de ligar e desligar esse puxão à vontade.

relé

  • O que é: Um eletroímã que puxa uma chave. Quando a corrente chega, o ímã puxa a lâmina, e a lâmina fecha outro caminho, de outra pilha.
  • Por que existe: Para um sinal fraco acionar um sinal forte. O fio comprido enfraquece o sinal; o relé o faz nascer de novo, com pilha nova.

transistor

  • O que é: Um interruptor com um eletroímã no lugar do dedo: com corrente no fio de controle, o caminho fecha; sem corrente, abre. Na bancada ele aparece com ímã e lâmina, que é como dá para ver; dentro do chip, o mesmo abre e fecha acontece sem peça que se mexa.
  • Por que existe: Para fazer o que o relé faz sendo minúsculo, rápido, sem esquentar e sem gastar quase nada. Foi assim que o rádio passou a caber no bolso.

Uma chave que outra corrente aciona deixa uma corrente mandar em outra. Por dentro, é um eletroímã no lugar do dedo: com corrente no fio de controle, o ímã puxa a lâmina e fecha o caminho; sem corrente, a lâmina solta. O relé é assim; o transistor faz o mesmo, minúsculo. Os dois só sabem duas coisas: ligado e desligado.

a matemática daqui · uma linha, o limiar, separa ligado de desligado

chave(v) = 1 se v ≥ limiar, e 0 se v < limiar

lê-se: chave de vê é igual a um se vê é maior ou igual ao limiar, e zero se vê é menor que o limiar.

antes de seguir, responda

O que o transistor e o relé têm em comum, que faz os dois serem a mesma família?

de onde isto vem
We’re interested only in the idea of a relay being a switch that can be controlled by electricity rather than by fingers.Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 7 — Telegraphs and Relays · cap. 15 — Is This for Real?

O que nos interessa é só a ideia de o relé ser uma chave que a eletricidade controla, em vez dos dedos.

Vacuum tubes were originally developed for amplification, but they could also be used for switches in logic gates. The same goes for the transistor.Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 7 — Telegraphs and Relays · cap. 15 — Is This for Real?

As válvulas nasceram para amplificar, mas também serviam de chave em portas lógicas. O mesmo vale para o transistor.

If you take an iron bar, wrap it with a couple of hundred turns of thin insulated wire, and then run a current through the wire, the iron bar becomes a magnet.Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 7 — Telegraphs and Relays
Morse couldn’t use a lightbulb as his signaling device because a practical one wouldn’t be invented until 1879. Instead, Morse relied upon the phenomenon of electromagnetism.Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 7 — Telegraphs and Relays
A relay is like a sounder in that an incoming current is used to power an electromagnet that pulls down a metal lever. The lever, however, is used as part of a switch connecting a battery to an outgoing wire.Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 7 — Telegraphs and Relays
the longer a length of wire becomes, the more resistance it has to the flow of electricity. This was a major impediment to long-distance telegraphy. … In this way, a weak incoming current is “amplified” to make a stronger outgoing current.Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 7 — Telegraphs and Relays
Vacuum tubes were originally developed for amplification, but they could also be used for switches in logic gates. The same goes for the transistor.Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 15 — Is This for Real?
Vacuum tubes were originally developed for amplification, but they could also be used for switches in logic gates. The same goes for the transistor.Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 15 — Is This for Real?

família 2 de 6 · portas lógicas decidem

Duas chaves em série decidem

Duas chaves em série só passam corrente com as duas fechadas: é a porta E. Em paralelo, basta uma: a porta OU. Decidir virou fiação.

antes, as palavras desta tela

entrada e saída

  • O que é: entrada é por onde a corrente chega numa peça; saída é por onde ela sai.
  • Por que existe: daqui para cima, toda peça se descreve pelo que sai, dado o que entrou.

em série e em paralelo

  • O que é: em série, duas chaves ficam uma depois da outra no mesmo caminho; em paralelo, cada chave tem o seu caminho.
  • Por que existe: é a diferença entre precisar das duas fechadas e bastar uma.

sim ou não

  • O que é: corrente na saída é sim; sem corrente é não. Também se escreve 1 e 0.
  • Por que existe: é a única pergunta que uma chave sabe responder, e dá para montar qualquer outra com ela.

antes de mexer, aposte

Dois relés em série, e só o relé A acionado. A lâmpada…

Dois relés viram uma porta

Ligue os dois e veja: em série a lâmpada só acende com os dois acionados, que é a porta E, feita de metal. A tabela-verdade não vem pronta: ela se preenche conforme você visita as combinações, e enquanto faltar linha o instrumento diz quantas faltam.

as peças desta família

porta lógica

  • O que é: Uma peça que responde sim ou não: deixa a corrente passar, ou bloqueia, conforme o que chega nas entradas. É feita de chaves ligadas de um certo jeito.
  • Por que existe: Porque uma chave acionada por outra chave pode ser ligada a mais chaves, e assim as perguntas de sim ou não se combinam até virar conta.

Uma porta lógica responde sim ou não a uma pergunta sobre as entradas, e a resposta é só a forma como os fios foram ligados. Com E, OU e NÃO se monta qualquer pergunta de sim ou não. É o ponto em que o assunto deixa de ser eletricidade e passa a ser lógica.

a matemática daqui · regras de sim ou não, que se combinam

E(a, b) = 1 só se a = 1 e b = 1

lê-se: E de a e b é igual a um só se a é igual a um e b é igual a um.

antes de seguir, responda

Que arranjo de dois relés acende a lâmpada quando qualquer um dos dois é acionado?

de onde isto vem
These two relays wired in series are known as an AND gate because it is performing a Boolean AND operation.Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 8 — Relays and Gates

Esses dois relés ligados em série são conhecidos como porta E, porque executam a operação E de Boole.

Reduced to its essentials, a computer is a synthesis of Boolean algebra and electricity. The crucial components that embody this melding of math and hardware are known as logic gates. … Logic gates perform simple operations in Boolean logic by blocking or letting through the flow of electrical current.Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 8 — Relays and Gates
Relays have an advantage over switches in that relays can be switched on and off by other relays rather than by fingers. This means that logic gates can be combined to perform more complex tasks, such as simple functions in arithmetic and, eventually, the workings of entire computers.Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 8 — Relays and Gates

família 3 de 6 · somadores fazem conta

Portas ligadas de um jeito fazem conta

OU-exclusivo dá a soma de dois bits; E dá o vai-um. Encadeadas, somam qualquer número. A ULA é esse arranjo com nome de função.

antes, as palavras desta tela

bit

  • O que é: uma casa que só aceita 0 ou 1. É o que uma chave guarda: desligada ou ligada.
  • Por que existe: é a menor quantidade de informação que existe; tudo o mais é feito de bits.

binário

  • O que é: um número escrito só com 0 e 1, em que cada casa vale o dobro da vizinha: 1, 2, 4, 8…
  • Por que existe: é o jeito de contar com chaves. Dois é 10; três é 11; quatro é 100.

byte

  • O que é: oito bits lado a lado. Cabem 256 valores diferentes.
  • Por que existe: é o tamanho de uma letra, e o pedaço que a máquina move de cada vez.

vai-um

  • O que é: o 1 que sobra de uma casa e vai para a casa seguinte, como no papel.
  • Por que existe: sem ele, a soma para na primeira casa.

OU-exclusivo

  • O que é: uma porta que responde sim só quando as duas entradas são diferentes.
  • Por que existe: é exatamente a soma de uma casa: 0 e 1 dá 1; 1 e 1 dá 0, e sobra o vai-um.

antes de mexer, aposte

A = 1 e B = 1 no somador. O que sai?

Duas portas viram uma conta

A porta OU-exclusivo dá a soma; a porta E dá o vai-um. A conta em binário aparece ao lado para você conferir que não é coincidência, e o caso que interessa é 1 + 1.

as peças desta família

somador

  • O que é: Uma peça que soma dois bits e devolve dois: o bit da soma e o vai-um.
  • Por que existe: Porque somar uma casa só não basta: da segunda casa em diante são três bits a somar, os dois da casa e o vai-um que veio da anterior.

ULA

  • O que é: A parte da máquina que soma e subtrai, e faz mais algumas coisas úteis.
  • Por que existe: Porque números grandes se somam em pedaços, um byte de cada vez, e cada pedaço precisa levar em conta o vai-um do anterior. A ULA faz essa sequência.

Somar 1 + 1 dá 10 em binário: soma 0 e vai-um 1, exatamente o que as duas portas respondem. Ligando um somador de uma casa ao da casa seguinte, soma-se qualquer número. A ULA, a calculadora da máquina, junta a soma, a subtração e as operações de sim ou não num só lugar.

a matemática daqui · somar em binário, casa por casa, com o vai-um

1 + 1 = 10 em binário: soma 0, vai-um 1

lê-se: um mais um é igual a um-zero em binário: soma zero, vai-um um.

antes de seguir, responda

Por que a ULA é da família dos somadores, e não da dos registradores?

de onde isto vem
A half adder is an XOR gate and an AND gateCharles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 14 — Adding with Logic Gates

Um meio-somador é uma porta OU-exclusivo e uma porta E.

adding a pair of binary numbers results in two bits, which are called the sum bit and the carry bit (as in “1 plus 1 equals 0, carry the 1”)Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 14 — Adding with Logic Gates
We can use the half adder only for the addition of the rightmost column: 1 plus 1 equals 0, carry the 1. For the second column from the right, we really need to add three binary numbers because of the carry. And that goes for all subsequent columns.Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 14 — Adding with Logic Gates
The remainder of this chapter focuses on the most fundamental part of the CPU, which is known as the arithmetic logic unit, or ALU. This is the part of the CPU that adds and subtracts, as well as performing a couple of other useful tasks.Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 21 — The Arithmetic Logic Unit
these large numbers must be added and subtracted in bytes, starting with the least significant byte. Each subsequent 1-byte addition or subtraction must take into account the carry from the previous operation.Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 21 — The Arithmetic Logic Unit

família 4 de 6 · registradores guardam número

Um circuito que lembra

Duas portas realimentadas lembram um bit depois que a entrada some. Oito lado a lado guardam um byte. Muitos, com endereço, são a memória.

antes, as palavras desta tela

realimentado

  • O que é: um circuito cuja saída volta para a própria entrada.
  • Por que existe: é o que faz a peça segurar o que recebeu, mesmo depois de a entrada sumir.

relógio e borda

  • O que é: o relógio é um tique que se repete, sempre igual; a borda é o instante em que o tique sobe. A peça que faz o tique vem na última família.
  • Por que existe: para todas as peças guardarem no mesmo instante, e não a qualquer momento.

endereço

  • O que é: o número na porta de uma fileira da memória.
  • Por que existe: para achar de novo o que foi guardado.

antes de mexer, aposte

Aperte S e solte. Depois aperte R e solte. Nos dois momentos a entrada voltou a (0, 0). A saída…

O circuito que lembra

S liga, R desliga, e Q é o que o circuito lembra. Aperte S e solte; aperte R e solte. Nos dois casos a entrada volta a ser (0, 0), e a saída é diferente. É essa a definição de lembrar, e é a coisa que nenhuma porta sozinha faz.

as peças desta família

flip-flop de nível

  • O que é: O primeiro circuito que lembra: com as duas chaves soltas, ele pode estar de dois jeitos, e fica no jeito em que a última chave o deixou.
  • Por que existe: Porque sem lembrar não existe antes: não há conta acumulada, não há contagem, não há ordem a cumprir. Tudo o que a máquina faz com o tempo começa aqui.

flip-flop de borda

  • O que é: Um flip-flop que só guarda o dado no instante em que o relógio sobe, e não durante todo o tempo em que ele está alto. É feito de dois flip-flops de nível em fila.
  • Por que existe: Porque o de nível vaza: enquanto o relógio está alto, qualquer mudança na entrada atravessa para a saída. Num circuito ligado à própria saída, isso vira um laço sem fim.

registrador

  • O que é: Oito flip-flops lado a lado, que guardam um byte enquanto a ULA trabalha nele. A máquina manda guardar e manda devolver.
  • Por que existe: Porque a ULA precisa de um lugar perto dela para pousar os números que vai somar e o resultado. Buscar na memória a cada passo seria uma viagem a cada conta.

contador

  • O que é: Uma fileira de flip-flops de borda em que cada um dispara o seguinte. Lida em binário, a fileira conta os tiques do relógio.
  • Por que existe: Porque a máquina precisa saber qual é a próxima. O número que o contador guarda vira o endereço que ela vai ler em seguida.

memória (RAM)

  • O que é: Muitos flip-flops em fileiras, cada fileira com um número na porta, o endereço. Dá para guardar um valor numa fileira e, depois, ler o que está lá.
  • Por que existe: Porque escrever e ler acontecem em momentos diferentes, e alguma coisa precisa manter o que foi escrito intacto entre os dois.

O flip-flop é o primeiro circuito cuja saída depende do que entrou antes, não só de agora. Guardando só na borda do relógio, vira o registrador, que segura um byte e o devolve quando mandam; em fileiras com endereço, vira a memória; ligado em fila, conta. Tudo é a mesma família: guardar número.

a matemática daqui · o estado de agora depende do estado de antes

st+1 = f(st, xt)

lê-se: o estado no instante tê mais um é f de: o estado no instante tê, e a entrada no instante tê.

antes de seguir, responda

A memória e o contador estão na família do flip-flop porque…

de onde isto vem
the level-triggered D-type flip-flop, which is made from an inverter, two AND gates, and two NOR gatesCharles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 19 — An Assemblage of Memory

o flip-flop tipo D disparado por nível, que é feito de um inversor, duas portas E e duas portas NÃO-OU

This configuration of flip-flops, decoder, and selector is sometimes known as read/write memoryCharles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 19 — An Assemblage of Memory

Esse arranjo de flip-flops, decodificador e seletor é às vezes chamado de memória de leitura e escrita

We can say that this circuit has two stable states when both switches are open. Such a circuit is called a flip-flop… A flip-flop circuit retains information. It “remembers.” It only remembers what switch was most recently closed, but that is significant.Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 17 — Feedback and Flip-Flops
An edge-triggered D-type flip-flop is constructed from two stages of level-triggered D-type flip-flops, wired together this way:Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 17 — Feedback and Flip-Flops
This is what’s called an “infinite loop.” It occurs because the D-type flip-flop we designed was level-triggered. The Clock input must change its level from 0 to 1 in order for the value of the Data input to be stored in the latch. But during the time that the Clock input is 1, the Data input can change, and those changes will be reflected in the values of the outputs.Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 17 — Feedback and Flip-Flops
These latches are called registers, and a primary purpose of these registers is to store bytes as they are processed by the ALU.Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 22 — Registers and Busses
This is a job for a counter built from a row of cascading flip-flops, such as the one you saw on page 237 of Chapter 17:Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 20 — Automating Arithmetic
This configuration of flip-flops, decoder, and selector is sometimes known as read/write memory because you can store values (that is, write them) and later determine what those values are (that is, read them). Because you can change the Address signals to any one of the eight values at will, this type of memory is more commonly known as random access memory, or RAMCharles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 19 — An Assemblage of Memory
We write and we later read. We save and we later retrieve. We store and we later access. The function of memory is to keep the information intact between those two events.Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 19 — An Assemblage of Memory

família 5 de 6 · instruções mandam

Um número lido como ordem

Ao lado dos dados moram bytes que a máquina lê como ordens; o contador de programa aponta qual. Daí sobem montador, interpretador e compilador.

antes, as palavras desta tela

instrução

  • O que é: uma ordem que a máquina sabe cumprir, guardada na memória como um byte: some, copie, guarde, pule.
  • Por que existe: sem ordens, a máquina só guardaria e somaria ao acaso.

programa

  • O que é: uma fila de instruções, uma depois da outra.
  • Por que existe: é como uma pessoa diz à máquina o que fazer, de uma vez, para a máquina fazer sozinha.

contador de programa

  • O que é: um contador que guarda o endereço da próxima instrução.
  • Por que existe: para a máquina saber qual byte ler como ordem agora, e qual vem depois.

controlador

  • O que é: a parte que lê a instrução e manda nas outras peças, uma de cada vez.
  • Por que existe: peça solta não faz nada em ordem; alguém tem de dizer quem trabalha agora.

antes de mexer, aposte

Na memória há o byte 4F. Ele é uma letra ou uma ordem?

CONTADOR DE PROGRAMA · aponta qual gaveta será lida como ORDEM agora PC0004 0003 36 4F o byte 36 é lido como“escreva em [HL]” o 4F da gaveta de baixo é uma letra; nada no byte diz isso, só o apontador

as peças desta família

máquina de registradores

  • O que é: Registradores e operações, mais um controlador que diz a ordem em que as operações acontecem. Desenhada, ela é um diagrama de fiação.
  • Por que existe: Porque peça solta não faz nada em ordem. Faltava um sinal que mandasse as peças trabalharem juntas para cumprir uma instrução guardada na memória.

montador

  • O que é: Um programa que lê o texto com as ordens, escritas em palavras, e o transforma na lista de instruções que a máquina executa.
  • Por que existe: Porque o texto usa nomes no lugar de endereços, e um nome é uma promessa de endereço que ainda não existe. O montador lê o texto inteiro antes, só para descobrir a que lugar cada nome aponta.

interpretador

  • O que é: Um programa que lê uma expressão e decide o que ela significa, passo a passo, usando os registradores da máquina.
  • Por que existe: Porque assim uma linguagem feita para pessoas roda numa máquina que só entende instruções: o interpretador é a ponte, escrito quase na língua da máquina.

compilador

  • O que é: Um programa que traduz, de uma vez, um programa escrito para pessoas num programa equivalente escrito na língua da máquina.
  • Por que existe: Porque interpretar a cada vez custa caro: traduzido de uma vez, o programa roda muito mais rápido. O preço é que o interpretador é melhor para experimentar e corrigir.

paradigma

  • O que é: Um jeito de programar que aparece quando se muda o interpretador. Por exemplo: ensinar o interpretador a procurar sozinho entre várias respostas possíveis.
  • Por que existe: Porque, sendo o interpretador um programa, dá para experimentar uma linguagem nova só mudando ele, antes de existir uma implementação de verdade.

Nada no byte diz se ele é dado ou ordem; o que decide é onde o contador de programa aponta. A máquina de registradores é esse arranjo: registradores, operações e um controlador que diz a ordem. O montador troca palavras por bytes; o interpretador executa um texto; o compilador o traduz de uma vez.

a matemática daqui · a máquina é uma regra de passo: do estado de agora para o próximo

próximo = passo(PC, A, mem)

lê-se: o próximo estado é passo de: o contador de programa, o registrador A, e a memória.

antes de seguir, responda

Qual destas peças não é da família das instruções?

de onde isto vem
To design a register machine, we must design its data paths (registers and operations) and the controller that sequences these operations.Harold Abelson & Gerald Jay Sussman, Structure and Interpretation of Computer Programs, 2ª ed. · §5.1 — Designing Register Machines · Petzold, cap. 23 — CPU Control Signals

Para projetar uma máquina de registradores, projetamos os caminhos de dados (registradores e operações) e o controlador que sequencia essas operações.

To design a register machine, we must design its data paths (registers and operations) and the controller that sequences these operations. … If we view the arrows as wires and the X buttons as switches, the data-path diagram is very like the wiring diagram for a machine that could be constructed from electrical components.Harold Abelson & Gerald Jay Sussman, Structure and Interpretation of Computer Programs, 2ª ed. · SICP §5.1 — Designing Register Machines
…control signals, so called because they control these components to work together in executing instructions stored in memory. … The CPU control signals are the strings.Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · caps. 22–23 — Registers and Busses · CPU Control Signals
The assembler transforms the sequence of controller expressions for a machine into a corresponding list of machine instructions, each with its execution procedure.Harold Abelson & Gerald Jay Sussman, Structure and Interpretation of Computer Programs, 2ª ed. · SICP §5.2.2 — The Assembler
Before it can generate the instruction execution procedures, the assembler must know what all the labels refer to, so it begins by scanning the controller text to separate the labels from the instructions.Harold Abelson & Gerald Jay Sussman, Structure and Interpretation of Computer Programs, 2ª ed. · SICP §5.2.2 — The Assembler
The explicit-control evaluator that we develop in this section shows how the underlying procedure-calling and argument-passing mechanisms used in the evaluation process can be described in terms of operations on registers and stacks.Harold Abelson & Gerald Jay Sussman, Structure and Interpretation of Computer Programs, 2ª ed. · SICP §5.4 — The Explicit-Control Evaluator
the explicit-control evaluator can serve as an implementation of a Scheme interpreter, written in a language that is very similar to the native machine language of conventional computers.Harold Abelson & Gerald Jay Sussman, Structure and Interpretation of Computer Programs, 2ª ed. · SICP §5.4 — The Explicit-Control Evaluator
A compiler for a given source language and machine translates a source program into an equivalent program (called the object program) written in the machine's native language.Harold Abelson & Gerald Jay Sussman, Structure and Interpretation of Computer Programs, 2ª ed. · SICP §5.5 — Compilation
Compared with interpretation, compilation can provide a great increase in the efficiency of program execution, as we will explain below in the overview of the compiler. On the other hand, an interpreter provides a more powerful environment for interactive program development and debugging, because the source program being executed is available at run time to be examined and modified.Harold Abelson & Gerald Jay Sussman, Structure and Interpretation of Computer Programs, 2ª ed. · SICP §5.5 — Compilation
we extend the Scheme evaluator to support a programming paradigm called nondeterministic computing by building into the evaluator a facility to support automatic searchHarold Abelson & Gerald Jay Sussman, Structure and Interpretation of Computer Programs, 2ª ed. · SICP §4.3 — Variations on a Scheme: Nondeterministic Computing
Now that we have an evaluator expressed as a Lisp program, we can experiment with alternative choices in language design simply by modifying the evaluator. Indeed, new languages are often invented by first writing an evaluator that embeds the new language within an existing high-level language.Harold Abelson & Gerald Jay Sussman, Structure and Interpretation of Computer Programs, 2ª ed. · SICP §4.2 — Variations on a Scheme: Lazy Evaluation

família 6 de 6 · relógio marca o tempo

O circuito que anda sozinho

Um relé ligado à própria saída liga e desliga sozinho: o oscilador. Contar as voltas dele é medir o tempo, por isso se chama relógio.

antes, as palavras desta tela

tique

  • O que é: uma volta completa do relógio: sobe e desce.
  • Por que existe: é a unidade de tempo da máquina; tudo acontece de tique em tique.

período e frequência

  • O que é: período é quanto dura um tique; frequência é quantos tiques cabem num segundo.
  • Por que existe: a frequência diz a velocidade da máquina.

antes de mexer, aposte

O oscilador dá 50 voltas por segundo. Em um segundo, o contador ligado a ele mostra…

Nível × borda, no mesmo relógio

Os dois circuitos, o mesmo dado, o mesmo relógio. A faixa clara é o tempo em que o relógio está alto: o de nível copia o dado durante toda ela, e por isso vaza. O de borda copia só na linha pontilhada. Aperte tocar e veja os dois lado a lado.

A contagem aparece sozinha

Dê pulsos e olhe as ondas: cada estágio vira na metade da frequência do anterior. Ninguém projetou a contagem binária; ela é a fiação.

as peças desta família

oscilador (o relógio)

  • O que é: Um circuito que muda de estado sozinho, sem ninguém abrir ou fechar uma chave.
  • Por que existe: Porque todo computador precisa de algo que faça o resto se mover em sincronia: é o relógio.

Todo computador tem um oscilador que faz tudo o mais se mover em sincronia. É ele que entra no flip-flop de borda e diz quando guardar, e no contador diz quando avançar. Sem relógio, os registradores não saberiam o instante de guardar, e a máquina não teria um passo.

a matemática daqui · o tempo vira contagem: 0, 1, 2, …

frequência = 1 ÷ período: 1 ÷ 0,02 s = 50 por segundo

lê-se: frequência é igual a um dividido pelo período: um dividido por zero vírgula zero dois segundo é igual a cinquenta por segundo.

antes de seguir, responda

O que o flip-flop de borda faz com o relógio?

de onde isto vem
All computers have some kind of oscillator that makes everything else move in synchronicity.Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 17 — Feedback and Flip-Flops

Todo computador tem algum tipo de oscilador que faz tudo o mais se mover em sincronia.

For that reason, an oscillator is sometimes referred to as a clock because by counting the number of oscillations you can tell time (kind of).Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 17 — Feedback and Flip-Flops

Por isso, um oscilador é às vezes chamado de relógio: contando as oscilações dá para dizer as horas (mais ou menos).

The oscillator doesn’t require a human being; it basically runs by itself.Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 17 — Feedback and Flip-Flops
All computers have some kind of oscillator that makes everything else move in synchronicity.Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2ª ed. · cap. 17 — Feedback and Flip-Flops

o fecho

O mapa inteiro, de baixo para cima

O eletroímã é o chão; o paradigma é o topo. Cada seta diz de que a peça de cima é feita, ou de que ela depende. Clique num nome para ir à peça.

daqui para cima o assunto é lógica, não eletricidade daqui para cima o assunto é linguagem, não circuito sistema operacional instrução não lido — a estrada continua, e o mapa não esconde isso eletroímã nível -1 relé nível 0 porta lógica nível 1 somador nível 2 flip-flop de nível nível 2 flip-flop de borda nível 3 contador nível 4 registrador nível 4 máquina deregistradores nível 5 ULA nível 3 montador nível 6 interpretador nível 6 paradigma nível 7 transistor nível 0 oscilador (o relógio) nível 1 memória (RAM) nível 3 compilador nível 7 a cor diz a família · a seta cheia: de que a peça é feita · a tracejada: o que ainda está fora da escada transistores portas lógicas somadores registradores instruções relógio

transistores — ligam e desligamportas lógicas — decidemsomadores — fazem contaregistradores — guardam númeroinstruções — mandamrelógio — marca o tempo

A cor do nó é a família. A linha dourada marca onde o assunto deixa de ser eletricidade e passa a ser lógica; a roxa, onde deixa de ser circuito e passa a ser linguagem. As setas tracejadas apontam para o que ainda não está na escada.