HTG explica: Como funciona uma CPU?

Índice:

HTG explica: Como funciona uma CPU?
HTG explica: Como funciona uma CPU?

Vídeo: HTG explica: Como funciona uma CPU?

Vídeo: HTG explica: Como funciona uma CPU?
Vídeo: WIFI 2.4Ghz e 5Ghz? QUAL é MELHOR? Qual a Diferença? - YouTube 2024, Abril
Anonim
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 um computador funcionar. Mas o coração do seu sistema, o CPU, parece mágico até para muitas pessoas de tecnologia. Aqui, faremos o melhor para dividi-lo.
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 um computador funcionar. Mas o coração do seu sistema, o CPU, parece mágico até para muitas pessoas de tecnologia. Aqui, faremos o melhor para dividi-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 até 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 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 até 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 verdadeiro 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.
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 verdadeiro 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 permanecerá 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:
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 permanecerá 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 pouco 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:
Isso nos dá uma configuração simples com três saídas distintas: zero, um e dois. Mas um pouco 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. Os somadores completos serão vinculados em uma cadeia, e o carry é passado de um somador para o seguinte. 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.
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. Os somadores completos serão vinculados em uma cadeia, e o carry é passado de um somador para o seguinte. 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 mais somadores completos em uma cadeia mais longa.
E isso é tão complexo quanto o adicional. Movendo-se para mais bits essencialmente significa apenas mais somadores 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 extravagante 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. Isso porque ele não consegue se lembrar 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. Esta não é apenas uma célula de memória, pois também precisamos de uma maneira de ler informações dela. Isso é feito com um ativador, que é uma coleção de portas AND para cada bit na memória, tudo vinculado a outra entrada, o bit de "leitura". Os bits de gravação e leitura são também chamados de “set” e “enable” também.
Neste momento, o nosso computador nada mais é do que uma calculadora ruim. Isso porque ele não consegue se lembrar 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. Esta não é apenas uma célula de memória, pois também precisamos de uma maneira de ler informações dela. Isso é feito com um ativador, que é uma coleção de portas AND para cada bit na memória, tudo vinculado a outra entrada, o bit de "leitura". Os bits de gravação e leitura são também chamados de “set” e “enable” também.

Todo este pacote está 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 multitarefa.

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ê ligaria o bit de gravação do R2, que copiaria o conteúdo do barramento para o R2.
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ê ligaria o bit de gravação do R2, que copiaria o conteúdo do barramento para o R2.

Registradores são usados para fazer RAM também. A RAM é geralmente colocada em uma grade, com 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 interseção, 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.
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 interseção, 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 geralmente é uma métrica muito boa para a velocidade da 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 ativo por mais tempo para garantir que os dados estejam ativados. O relógio de set precisa sempre estar ligado ao mesmo tempo que o relógio de habilitação, ou dados incorretos podem ser gravados.
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 ativo por mais tempo para garantir que os dados estejam ativados. O relógio de set precisa sempre estar ligado ao mesmo tempo que o relógio de habilitação, ou dados incorretos podem ser gravados.

O relógio está conectado ao passo a passo, 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 possa entender. Ele tem seu próprio registro interno, chamado de “Registro de instruções”, que é onde a operação atual é armazenada. Como isso acontece exatamente no sistema em que você está executando, mas, assim que for decodificado, ele ativará o conjunto correto e ativará os bits dos registros corretos, que serão disparados de acordo com o relógio.
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 possa entender. Ele tem seu próprio registro interno, chamado de “Registro de instruções”, que é onde a operação atual é armazenada. Como isso acontece exatamente no sistema em que você está executando, mas, assim que for decodificado, ele ativará o conjunto correto e ativará os bits dos 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 todas as outras variáveis, elas podem ser manipuladas instantaneamente 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 registros. 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.
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 registros. 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 carrega o segundo no barramento. Enquanto isso, envia à ALU um código de instrução dizendo-lhe o que fazer. A ULA, em seguida, executa todos os cálculos e armazena o resultado em um registrador diferente, do qual a CPU pode ler e, em seguida, continuar o processo.

Recomendado: