Sou nerd de computador há muitos e muitos anos. Eu posso programar em várias línguas e até construí-las. Outro dia, sentei-me com um amigo e perguntei como um computador realmente leva eletricidade e faz alguma coisa com ele, e simplesmente não conseguimos descobrir, e o Google também não ajudou muito.
Quero dizer, como um computador pega um fluxo constante de eletricidade e o transforma em zeros e zeros e depois faz algo com esses zeros e zeros, como acender a luz por 15 segundos?
Entendo portões (AND, OR, NOR, NAND, NOT) e um pouco sobre diodos , resistores e transistores , mas achei que esse seria o lugar perfeito para explicar em termos de verdadeiros leigos!
Alguém pode me apontar na direção certa ou me dar uma breve explicação?
Respostas:
Essa é uma pergunta ampla que não tem uma resposta fácil; está muito longe de elétrons deslizando pelos fios de cobre até a renderização de um site no Firefox. Tentarei fornecer uma visão geral de baixo para cima e apontar as coisas certas para procurar.
Números de codificação
Observe que também existem várias maneiras de codificar números em binário. Depois de montar seu primeiro processador, você percebe vantagens de fazer as coisas de determinadas maneiras. Exemplos populares são os carros alegóricos de dois complementos e IEEE . Para iniciantes, restrinja-se a números naturais simples.
Portões
Suponha que usamos codificação binária. Pense em como você aprendeu a adicionar na escola primária e escreva o mesmo para números binários. Como se vê, os blocos de construção da álgebra booleana já estão lá para você; é fácil construir um somador básico (e outras funções aritméticas) usando portas lógicas .
Como construir esses portões está fora do escopo da ciência da computação; a engenharia elétrica forneceu várias soluções usando, por exemplo, tubos ou transistores . Vá para o Electrical Engineering Stack Exchange para perguntas sobre isso.
Relógio e Estado
Nem todos os portões são igualmente rápidos e nem todas as partes de um cálculo têm o mesmo número de portões. Portanto, temos que tomar cuidado extra para que as operações individuais não se superem. Provou-se útil usar um relógio global ; o resultado de uma determinada rede de portas é o estado dos fios de saída no final do ciclo (que pode mudar muito enquanto os portões se conectam em cascata em direção a seus estados finais individuais).
Isso significa que os resultados de um ciclo podem ter que ser armazenados até o próximo ciclo, por exemplo, se você conectar os loops. Há vários elementos básicos que você pode usar para efeitos variados, todos construídos a partir de portas; alguns são chamados de chinelos . Eles também são usados para criar registros , elementos que armazenam números para quantos ciclos de relógio forem necessários.
Arquitetura e comandos
Agora você tem uma infinidade de opções de design a fazer. Quais operações aritméticas seu processador fornece? Como são seus comandos? Pode ser educativo olhar para a arquitetura MIPS, cujas formas iniciais são fáceis em comparação com outros designs. Veja os planos :
Original de http://ube.ege.edu.tr/~erciyes/CENG311
Essencialmente, é buscar e desmontar comandos, um conjunto de registros, uma ALU e controle. Os comandos codificam qual operação da ALU executar em quais operandos (pelo número do registro em que são mantidos), como manipular o contador do programa² ou qual registro para carregar / armazenar da / na memória³.
Considerações adicionais
Até agora você tem um processador em funcionamento no sentido moderno, supondo que tenha descoberto como construir uma memória e uma maneira de alimentar os comandos. No caminho para uma máquina moderna, muitas escolhas precisam ser feitas. Aqui estão alguns:
Alternativas
O exposto acima é fortemente influenciado pelo resultado da história. Em um mundo diferente, com mentes diferentes, os computadores podem funcionar de maneira diferente. De fato, existem muitos modelos de computação , alguns dos quais têm vantagens que os tornam úteis como abstração para máquinas reais em muitos casos. Também existem tentativas de imitar o funcionamento de nossos cérebros, ou seja, permitir a computação neural ou, de maneira mais geral, explorar estratégias de solução de problemas e armazenamento de informações observadas na natureza , principalmente o DNA e a computação quântica .
Então, talvez (espero?) As informações acima sejam toda a história antiga daqui a 50 ou 100 anos.
fonte
A imagem completa é bastante complicada. Existem muitas camadas construídas umas sobre as outras que implementam coletivamente abstrações de alto nível sobre tensões elétricas. Não há uma explicação simples de como tudo é organizado, especialmente considerando que o hardware e o software do computador evoluíram drasticamente nos últimos cinquenta anos.
Se você estiver interessado em ver como tudo é organizado, consulte The Elements of Computing Systems , um livro que começa com NAND gates e constrói progressivamente uma implementação funcional do Tetris em cima de um compilador e sistema operacional que você também constrói. Cada parte do computador é construída sobre a anterior, o que pode ajudá-lo a ver como tudo funciona.
fonte
O podcast Segurança Agora! fez uma série de como os computadores funcionam, começando com os princípios básicos.
As lacunas nos números devem-se ao fato de todos os outros episódios serem de feedback do ouvinte, portanto, você também pode assistir a esses episódios. Também entre 241 e 247, eles fizeram alguns episódios sobre SSL, devido às notícias de última hora sobre países que obrigavam a CA a dar raízes a eles.
Também EP. 248 é o "Portable Dog Killer", que não mata cães, mas uma arma sônica que Steve fez sozinho quando criança para ajudar a ensinar um cão vizinho a não correr até a linha da cerca e tentar atacar pessoas na calçada .
fonte
Um computador trabalha manipulando gradientes de energia (que depois interpretamos como 1 e 0) de maneira consistente e definida . É a consistência que define um computador, enquanto é a definição que separa os diferentes processadores.
Além disso, aprenda sobre como apenas duas portas lógicas (OR e AND) são blocos de construção suficientes para construir qualquer computador de uso geral. Veja também Danny Hillis e o computador Tinkertoy.
fonte
Um computador é um grande sistema lógico síncrono , o que significa que
Possui circuitos especializados para reter informações enquanto o computador estiver ligado (RAM, em grandes quantidades). Possui circuitos especializados para executar aritmética binária (na verdade, os bits são manipulados em grupos - geralmente em múltiplos de 8 - que representam coletivamente um número inteiro). E possui recursos de roteamento especializados baseados em endereços de memória, que nada mais são que números inteiros.
Por último, mas não menos importante, um computador moderno possui um programa também armazenado na RAM, que é uma lista de instruções codificadas como números inteiros, executadas sequencialmente, geralmente buscando dados da memória, realizando alguma aritmética e enviando os resultados de volta à memória.
No seu cenário, pode-se pensar em uma implementação em que o tempo decorrido seja armazenado em algum lugar da RAM e o programa instrua a
Observe que hoje em dia todos esses elementos alcançam um alto grau de sofisticação e cada frase desta breve visão geral merece vários livros de explicações.
fonte
Existem várias maneiras de executar uma função de atraso ou converter os dados binários em dados decimais ou intensidade do sinal. Quando você insere o valor "15", o computador exibe uma imagem de bitmap do número 15 na tela. Este é realmente o valor binário, no momento o código binário do seu teclado também é enviado para a CPU. Ele analisará os dados e depois transformará o código na unidade de processamento ALU (unidade lógica aritmética) para convertê-lo em um pulso para um chip DAC. O sinal analógico agora está controlando a frequência (a frequência de khz a hz) de um circuito de flip-flop. Agora, a saída de frequência será direcionada para a RAM e a CPU leu a RAM para corresponder se os dados forem "1111". Então são 4 segundos.
fonte