hello-world-machine
← → no teclado; uma família por tela
antes de tudo
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 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
chave
ímã
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…
A chave não tem meio-termo: ou a lâmina fecha o caminho, ou não. É por isso que dá para confiar: correntes diferentes dão o mesmo resultado, ligado ou desligado.
as peças desta família
eletroímã
relé
transistor
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?
Família é o que a peça faz: estas ligam e desligam. Amplificar foi o primeiro uso do transistor; guardar número é outra família, a dos registradores.
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 RelaysMorse 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 RelaysA 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 Relaysthe 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 RelaysVacuum 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 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
em série e em paralelo
sim ou não
antes de mexer, aposte
Dois relés em série, e só o relé A acionado. A lâmpada…
Em série, a corrente passa pelos dois contatos; um aberto basta para cortar. É a porta E: precisa dos dois.
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
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?
Em paralelo há dois caminhos, e basta um fechado. É a porta OU. Em série é a porta E.
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 GatesEsses 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 GatesRelays 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 Gatesfamília 3 de 6 · somadores 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
binário
byte
vai-um
OU-exclusivo
antes de mexer, aposte
A = 1 e B = 1 no somador. O que sai?
Um mais um é dois, que em binário se escreve 10: a casa da soma fica 0 e o 1 vai para a casa seguinte. OU-exclusivo de 1 e 1 é 0; E de 1 e 1 é 1.
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
ULA
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?
A ULA opera e devolve; quem guarda o resultado é outra família, a dos registradores, que vem a seguir. Família é o que a peça faz com o número.
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 GatesUm 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 GatesWe 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 GatesThe 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 Unitthese 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 Unitfamília 4 de 6 · registradores guardam número
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
relógio e borda
endereço
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…
Com a mesma entrada, saídas diferentes: a saída depende do que veio antes. É isso que lembrar quer dizer, e nenhuma porta sozinha faz.
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
flip-flop de borda
registrador
contador
memória (RAM)
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…
Os três são feitos de flip-flops. O contador também soma um a cada tique, mas o que ele conserva é o número guardado.
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 Memoryo 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 MemoryEsse 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-FlopsAn 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-FlopsThis 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-FlopsThese 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 BussesThis 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 ArithmeticThis 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 MemoryWe 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 Memoryfamília 5 de 6 · instruções mandam
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
programa
contador de programa
controlador
antes de mexer, aposte
Na memória há o byte 4F. Ele é uma letra ou uma ordem?
O byte é o mesmo nos dois casos. Quem decide é o apontador: se o contador de programa chega nele, é lido como ordem.
as peças desta família
máquina de registradores
montador
interpretador
compilador
paradigma
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?
O somador faz conta e não sabe o que é uma ordem. Montador e compilador vivem de traduzir ordens.
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 SignalsPara 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 SignalsThe 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 AssemblerBefore 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 AssemblerThe 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 Evaluatorthe 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 EvaluatorA 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 — CompilationCompared 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 — Compilationwe 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 ComputingNow 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 Evaluationfamília 6 de 6 · relógio marca o tempo
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
período e frequência
antes de mexer, aposte
O oscilador dá 50 voltas por segundo. Em um segundo, o contador ligado a ele mostra…
O contador avança um a cada volta do relógio. Contar voltas é medir tempo: é exatamente por isso que o oscilador se chama 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.
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)
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?
Na borda, e só nela. O de nível guarda enquanto o relógio está alto, e por isso vaza. O instrumento desta família mostra os dois lado a lado.
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-FlopsTodo 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-FlopsPor 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-FlopsAll 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-Flopso fecho
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.
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.