HTG explica como funciona uma CPU?
A maioria das coisas em um computador é relativamente simples de entender: a RAM, o armazenamento, os periféricos e o software trabalham juntos para fazer uma função de computador. Mas o coração do seu sistema, o CPU, parece mágico até para muitas pessoas de tecnologia. Aqui, faremos o nosso melhor para derrubá-lo.
A maioria das pesquisas para este artigo vem de "Mas como é que ele sabe?" Por J. Clark Scott. É uma leitura fantástica, entra em muito mais profundidade do que este artigo, e vale bem a pena o casal na Amazon.
Uma nota antes de começarmos: CPUs modernas são ordens de magnitude mais complexas do que as que estamos esboçando aqui. É quase impossível para uma pessoa entender cada nuance de um chip com mais de um bilhão de transistores. No entanto, os princípios básicos de como tudo se encaixa permanecem os mesmos, e entender o básico lhe dará uma melhor compreensão dos sistemas modernos..
Começando Pequeno
Computadores operam em binário. Eles só entendem dois estados: ligado e desligado. Para realizar cálculos em binário, eles usam o que é chamado de transistor. O transistor só permite que a corrente da fonte flua através dele para o dreno, se houver corrente no portão. Essencialmente, isso forma um comutador binário, que corta o fio dependendo de um segundo sinal de entrada.
Computadores modernos usam bilhões de transistores para realizar cálculos, mas nos níveis mais baixos, você só precisa de um punhado para formar os componentes mais básicos, conhecidos como portões..
Portões lógicos
Empilhe alguns transistores corretamente e você terá o que é conhecido como porta lógica. Portas lógicas pegam duas entradas binárias, executam uma operação nelas e retornam uma saída. A porta OR, por exemplo, retorna true se qualquer uma das entradas for verdadeira. O gate AND verifica se ambas as entradas são verdadeiras, XOR verifica se apenas uma das entradas é verdadeira e as variantes N (NOR, NAND e XNOR) são versões invertidas de suas portas base.
Fazendo Matemática Com Portões
Com apenas dois portões você pode fazer uma adição binária básica. Este diagrama acima mostra um meio somador, criado usando o Logicly, um playground on-line gratuito para portas lógicas. O gate XOR aqui irá ligar se apenas uma das entradas estiver ativada, mas não ambas. O gate AND será ativado se ambas as entradas estiverem ativas, mas ficará desativado se não houver entrada. Então, se ambos estão ligados, o XOR permanece desligado, e o portão AND liga, chegando à resposta correta de dois:
Isso nos dá uma configuração simples com três saídas distintas: zero, um e dois. Mas um bit não pode armazenar nada maior do que 1, e esta máquina não é muito útil, pois resolve apenas um dos problemas matemáticos mais simples possíveis. Mas isso é apenas um meio somador, e se você conectar dois deles com outra entrada, você terá um somador completo:
O somador completo tem três entradas - os dois números para adicionar e um “transportar”. O transporte é usado quando o número final excede o que pode ser armazenado em um único bit. Somadores completos serão ligados em uma cadeia, e o carry é passado de um somador para o próximo. O carry é adicionado ao resultado do gate XOR na primeira metade do somador, e há uma porta OR extra para lidar com ambos os casos quando o modo que precisaria estar ativado.
Quando ambas as entradas estão ativadas, o carry liga e envia para o próximo somador completo na cadeia:
E isso é tão complexo quanto o adicional. Movendo-se para mais bits essencialmente significa apenas somadores mais completos em uma cadeia mais longa.
A maioria das outras operações matemáticas pode ser feita com adição; A multiplicação é apenas uma adição repetida, a subtração pode ser feita com alguma inversão de bits, e a divisão é apenas subtração repetida. E enquanto todos os computadores modernos têm soluções baseadas em hardware para acelerar operações mais complicadas, você pode tecnicamente fazer tudo com o somador completo.
O barramento e a memória
Neste momento, o nosso computador nada mais é do que uma calculadora ruim. Isto é porque não se lembra de nada e não faz nada com suas saídas. Acima é uma célula de memória, que pode fazer tudo isso. Sob o capô, ele usa muitos portões NAND, e na vida real pode ser bem diferente dependendo da técnica de armazenamento, mas sua função é a mesma. Você dá algumas entradas, liga o bit 'write' e armazena as entradas dentro da célula. Isso não é apenas uma célula de memória, pois também precisamos de uma maneira de ler informações dela. Isto é feito com um enabler, que é uma coleção de portas AND para cada bit na memória, todas ligadas a outra entrada, o bit “read”. Os bits de gravação e leitura são também chamados de “set” e “enable” também.
Todo este pacote é embrulhado no que é conhecido como um registro. Esses registros são conectados ao barramento, que é um conjunto de fios que percorre todo o sistema, conectado a todos os componentes. Mesmo os computadores modernos têm um barramento, embora possam ter vários barramentos para melhorar o desempenho de multitarefas.
Cada registrador ainda tem um bit de escrita e leitura, mas nesta configuração, a entrada e a saída são a mesma coisa. Isso é realmente bom. Por exemplo. Se você quisesse copiar o conteúdo de R1 para R2, ativaria o bit de leitura para R1, o que levaria o conteúdo de R1 para o barramento. Enquanto o bit de leitura está ativado, você liga o bit de gravação para R2, que copia o conteúdo do barramento em R2.
Registradores são usados para fazer RAM também. A RAM é geralmente colocada em uma grade, com os fios indo em duas direções:
Os decodificadores pegam uma entrada binária e ligam o fio numerado correspondente. Por exemplo, “11” é 3 em binário, o maior número de 2 bits, portanto, o decodificador ligaria o fio mais alto. Em cada cruzamento, há um registro. Todos eles estão conectados ao barramento central e a uma entrada central de gravação e leitura. Tanto a entrada de leitura quanto a de gravação só serão ativadas se os dois fios que atravessam o registro também estiverem ativados, permitindo efetivamente que você selecione o registro do qual gravar e ler. Novamente, a RAM moderna é muito mais complicada, mas essa configuração ainda funciona.
O relógio, o passo e o decodificador
Os registradores são usados em todos os lugares e são a ferramenta básica para mover dados e armazenar informações na CPU. Então, o que lhes diz para mudar as coisas?
O relógio é o primeiro componente no núcleo da CPU e será desligado e ligado em um intervalo definido, medido em hertz ou ciclos por segundo. Esta é a velocidade que você vê anunciada ao lado de CPUs; um chip de 5 GHz pode executar 5 bilhões de ciclos por segundo. A velocidade do clock é uma métrica muito boa para a rapidez com que uma CPU é.
O relógio tem três estados diferentes: o relógio base, o relógio de ativação e o relógio de ajuste. O relógio base ficará ligado por meio ciclo e desligado pela outra metade. O relógio de ativação é usado para ativar registros e precisará permanecer ativado por mais tempo para garantir que os dados estejam ativados. O relógio de set precisa sempre estar ligado ao mesmo tempo que o clock de habilitação, ou dados incorretos poderiam ser escritos.
O relógio está conectado ao stepper, que contará de um passo para o máximo, e se redefinirá de volta para um quando estiver pronto. O relógio também está conectado a portas AND para cada registro para o qual a CPU pode gravar:
Essas portas AND também são conectadas à saída de outro componente, o decodificador de instruções. O decodificador de instrução pega uma instrução como “SET R2 TO R1” e a decodifica em algo que a CPU pode entender. Ele possui seu próprio registro interno, chamado de “Registro de instruções”, que é onde a operação atual é armazenada. Exatamente como isso se resume ao sistema em que você está rodando, mas uma vez que ele é decodificado, ele ativará o conjunto correto e ativará os bits para os registros corretos, que serão disparados de acordo com o relógio.
As instruções do programa são armazenadas na RAM (ou cache L1 nos sistemas modernos, mais perto da CPU). Como os dados do programa são armazenados em registradores, assim como qualquer outra variável, ele pode ser manipulado rapidamente para pular o programa. É assim que os programas obtêm sua estrutura, com loops e instruções if. Uma instrução de salto define a localização atual na memória que o decodificador de instrução está lendo para um local diferente.
Como tudo vem junto
Agora, nossa simplificação grosseira de como uma CPU funciona está completa. O barramento principal abrange todo o sistema e se conecta a todos os registradores. Os adicionadores completos, junto com um monte de outras operações, são empacotados na Unidade Lógica de Aritmética, ou na ULA. Esta ALU terá conexões com o barramento e também terá seus próprios registros para armazenar o segundo número em que está operando..
Para realizar um cálculo, os dados do programa são carregados da RAM do sistema para a seção de controle. A seção de controle lê dois números da RAM, carrega o primeiro no registrador de instruções da ULA e, em seguida, carrega o segundo no barramento. Enquanto isso, envia à ALU um código de instrução informando o que fazer. A ALU então executa todos os cálculos e armazena o resultado em um registrador diferente, do qual a CPU pode ler e então continua o processo..
Crédito de imagem: Rost9 / Shutterstock