Como funcionam os microprocessadores

  • Paul Sparks
  • 0
  • 4704
  • 1421
Os microprocessadores estão no coração de todos os computadores. Jorg Greuel / Getty Images

-O computador que você está usando para ler esta página usa um microprocessador para fazer seu trabalho. O microprocessador é o coração de qualquer computador normal, seja uma máquina desktop, um servidor ou um laptop. O microprocessador que você está usando pode ser um Pentium, um K6, um PowerPC, um Sparc ou qualquer uma das muitas outras marcas e tipos de microprocessadores, mas todos eles fazem aproximadamente a mesma coisa, aproximadamente da mesma maneira.

Um microprocessador - também conhecido como CPU ou unidade de processamento central - é um mecanismo de computação completo que é fabricado em um único chip. O primeiro microprocessador foi o Intel 4004, lançado em 1971. O 4004 não era muito poderoso - tudo o que podia fazer era adicionar e subtrair, e só podia fazer 4 bits por vez. Mas era incrível que tudo estivesse em um único chip. Antes do 4004, os engenheiros construíam computadores a partir de conjuntos de chips ou de componentes discretos (transistores conectados um de cada vez). O 4004 acionou uma das primeiras calculadoras eletrônicas portáteis.

- Se você já se perguntou o que o microprocessador do seu computador está fazendo, ou se você já se perguntou sobre as diferenças entre os tipos de microprocessadores, continue lendo. Neste artigo, você aprenderá como técnicas de lógica digital bastante simples permitem que um computador faça seu trabalho, seja jogando um jogo ou verificando a ortografia de um documento!

Conteúdo
  1. Progressão do microprocessador: Intel
  2. Lógica do microprocessador
  3. Memória do microprocessador
  4. Instruções do microprocessador
  5. Desempenho e tendências do microprocessador
  6. Microprocessadores de 64 bits
O Intel 8080 foi o primeiro microprocessador em um computador doméstico.

O primeiro microprocessador a transformá-lo em um computador doméstico foi o Intel 8080, um computador de 8 bits completo em um chip, lançado em 1974. O primeiro microprocessador a fazer um verdadeiro sucesso no mercado foi o Intel 8088, lançado em 1979 e incorporado no IBM PC (que apareceu pela primeira vez por volta de 1982). Se você está familiarizado com o mercado de PCs e sua história, você sabe que o mercado de PCs mudou do 8088 para o 80286 para o 80386 para o 80486 para o Pentium para o Pentium II para o Pentium III para o Pentium 4. Todos esses os microprocessadores são feitos pela Intel e todos eles são melhorias no design básico do 8088. O Pentium 4 pode executar qualquer código que rodasse no 8088 original, mas o faz cerca de 5.000 vezes mais rápido!

Desde 2004, a Intel introduziu microprocessadores com múltiplos núcleos e milhões de transistores. Mas mesmo esses microprocessadores seguem as mesmas regras gerais dos chips anteriores.

Aqui estão as diferenças entre os diferentes processadores que a Intel lançou ao longo dos anos. Compilado do Guia de referência rápida do microprocessador Intel e pontuações de benchmark TSCP

Informações adicionais sobre a tabela nesta página:

  • o encontro é o ano em que o processador foi introduzido pela primeira vez. Muitos processadores são reintroduzidos em velocidades de clock mais altas por muitos anos após a data de lançamento original.
  • Transistores é o número de transistores no chip. Você pode ver que o número de transistores em um único chip tem aumentado constantemente ao longo dos anos.
  • Microns é a largura, em mícrons, do menor fio do chip. Para efeito de comparação, um cabelo humano tem 100 mícrons de espessura. Conforme o tamanho do recurso no chip diminui, o número de transistores aumenta.
  • Velocidade do relógio é a taxa máxima em que o chip pode ter o clock. A velocidade do relógio fará mais sentido na próxima seção.
  • Largura de dados é a largura da ALU. Uma ALU de 8 bits pode adicionar / subtrair / multiplicar / etc. dois números de 8 bits, enquanto uma ALU de 32 bits pode manipular números de 32 bits. Uma ALU de 8 bits teria que executar quatro instruções para adicionar dois números de 32 bits, enquanto uma ALU de 32 bits poderia fazer isso em uma instrução. Em muitos casos, o barramento de dados externo tem a mesma largura da ALU, mas nem sempre. O 8088 tinha uma ALU de 16 bits e um barramento de 8 bits, enquanto os Pentiums modernos buscam dados de 64 bits por vez para suas ALUs de 32 bits.
  • MIPS significa "milhões de instruções por segundo" e é uma medida aproximada do desempenho de uma CPU. CPUs modernas podem fazer tantas coisas diferentes que as classificações MIPS perdem muito de seu significado, mas você pode ter uma noção geral do poder relativo das CPUs nesta coluna.

Nessa tabela, você pode ver que, em geral, existe uma relação entre a velocidade do clock e o MIPS. A velocidade máxima do clock é uma função do processo de fabricação e dos atrasos dentro do chip. Também existe uma relação entre o número de transistores e MIPS. Por exemplo, o 8088 tinha clock de 5 MHz, mas só era executado a 0,33 MIPS (cerca de uma instrução por 15 ciclos de clock). Os processadores modernos geralmente podem executar a uma taxa de duas instruções por ciclo de clock. Essa melhoria está diretamente relacionada ao número de transistores no chip e fará mais sentido na próxima seção.

O que é um chip?

UMA lasca também é chamado de circuito integrado. Geralmente é um pedaço pequeno e fino de silício no qual os transistores que constituem o microprocessador foram gravados. Um chip pode ter o tamanho de uma polegada de lado e pode conter dezenas de milhões de transistores. Processadores mais simples podem consistir em alguns milhares de transistores gravados em um chip de apenas alguns milímetros quadrados.

Processador Intel Pentium 4 Foto cedida pela Intel Corporation

Para entender como um microprocessador funciona, é útil olhar para dentro e aprender sobre a lógica usada para criá-lo. No processo, você também pode aprender sobre linguagem assembly -- a linguagem nativa de um microprocessador - e muitas das coisas que os engenheiros podem fazer para aumentar a velocidade de um processador.

Um microprocessador executa uma coleção de instruções de máquina que dizem ao processador o que fazer. Com base nas instruções, um microprocessador faz três coisas básicas:

  • Usando sua ALU (Aritmética / Unidade Lógica), um microprocessador pode realizar operações matemáticas como adição, subtração, multiplicação e divisão. Os microprocessadores modernos contêm processadores de ponto flutuante completos que podem realizar operações extremamente sofisticadas em grandes números de ponto flutuante.
  • Um microprocessador pode mover dados de um local de memória para outro.
  • Um microprocessador pode tomar decisões e pular para um novo conjunto de instruções com base nessas decisões.

Pode haver coisas muito sofisticadas que um microprocessador faz, mas essas são suas três atividades básicas. O diagrama a seguir mostra um microprocessador extremamente simples, capaz de fazer essas três coisas:

Isso é tão simples quanto um microprocessador pode ser. Este microprocessador tem:

  • A ônibus de endereço (que pode ter 8, 16 ou 32 bits de largura) que envia um endereço para a memória
  • UMA barramento de dados (que pode ter 8, 16 ou 32 bits de largura) que pode enviar dados para a memória ou receber dados da memória
  • A RD (Leia e WR (escrever) linha para dizer à memória se deseja definir ou obter a localização endereçada
  • UMA linha do relógio que permite que um pulso de clock sequencie o processador
  • UMA linha de reset que zera o contador do programa (ou qualquer outro) e reinicia a execução

Vamos supor que os barramentos de endereço e de dados tenham 8 bits de largura neste exemplo.

Aqui estão os componentes deste microprocessador simples:

  • Os registros A, B e C são simplesmente travas feitas de flip-flops. (Consulte a seção sobre "travas acionadas por borda" em Como funciona a lógica booleana para obter detalhes.)
  • A trava de endereço é como os registros A, B e C.
  • O contador do programa é uma trava com a capacidade extra de incrementar em 1 quando instruído a fazê-lo e também de zerar quando instruído a fazê-lo.
  • A ALU pode ser tão simples quanto um somador de 8 bits (consulte a seção sobre somadores em Como funciona a lógica booleana para obter detalhes) ou pode ser capaz de adicionar, subtrair, multiplicar e dividir valores de 8 bits. Vamos assumir o último aqui.
  • O registro de teste é uma trava especial que pode conter valores de comparações realizadas na ALU. Uma ALU pode normalmente comparar dois números e determinar se eles são iguais, se um é maior que o outro, etc. O registro de teste também pode conter um bit de transporte do último estágio do somador. Ele armazena esses valores em flip-flops e então o decodificador de instruções pode usar os valores para tomar decisões.
  • Existem seis caixas marcadas com "3 estados" no diagrama. Esses são buffers tri-state. Um buffer tri-state pode passar 1, 0 ou pode essencialmente desconectar sua saída (imagine uma chave que desconecta totalmente a linha de saída do fio para o qual a saída está indo). Um buffer tri-state permite que várias saídas se conectem a um fio, mas apenas uma delas realmente conduza um 1 ou 0 para a linha.
  • O registro de instrução e o decodificador de instrução são responsáveis ​​por controlar todos os outros componentes.

Embora não sejam mostrados neste diagrama, haveria linhas de controle do decodificador de instruções que:

  • Diga ao registrador A para travar o valor atualmente no barramento de dados
  • Diga ao registrador B para travar o valor atualmente no barramento de dados
  • Diga ao registrador C para travar o valor atualmente produzido pela ALU
  • Diga ao registrador do contador do programa para travar o valor atualmente no barramento de dados
  • Diga ao registrador de endereço para travar o valor atualmente no barramento de dados
  • Diga ao registrador de instrução para travar o valor atualmente no barramento de dados
  • Diga ao contador do programa para aumentar
  • Diga ao contador do programa para zerar
  • Ative qualquer um dos seis buffers tri-state (seis linhas separadas)
  • Diga à ALU qual operação executar
  • Diga ao registrador de teste para travar os bits de teste da ALU
  • Ative a linha RD
  • Ative a linha WR

Entrando no decodificador de instruções estão os bits do registro de teste e da linha do relógio, bem como os bits do registro de instrução.

Chip ROM

A seção anterior falou sobre o endereço e barramentos de dados, bem como as linhas RD e WR. Esses barramentos e linhas se conectam à RAM ou ROM - geralmente ambos. Em nosso microprocessador de amostra, temos um barramento de endereço de 8 bits e um barramento de dados de 8 bits. Isso significa que o microprocessador pode endereçar (28) 256 bytes de memória e pode ler ou gravar 8 bits de memória por vez. Vamos supor que este microprocessador simples tenha 128 bytes de ROM começando no endereço 0 e 128 bytes de RAM começando no endereço 128.

ROM significa memória somente leitura. Um chip ROM é programado com uma coleção permanente de bytes predefinidos. O barramento de endereço informa ao chip ROM qual byte obter e colocar no barramento de dados. Quando a linha RD muda de estado, o chip ROM apresenta o byte selecionado no barramento de dados.

RAM significa memória de acesso aleatório. A RAM contém bytes de informação e o microprocessador pode ler ou gravar nesses bytes, dependendo se a linha RD ou WR está sinalizada. Um problema com os chips de RAM de hoje é que eles esquecem tudo quando a energia é desligada. É por isso que o computador precisa de ROM.

Chip de RAM

A propósito, quase todos os computadores contêm alguma quantidade de ROM (é possível criar um computador simples que não contenha RAM - muitos microcontroladores fazem isso colocando um punhado de bytes de RAM no próprio chip do processador - mas geralmente impossível de criar um que não contém ROM). Em um PC, a ROM é chamada de BIOS (Basic Input / Output System). Quando o microprocessador é iniciado, ele começa a executar as instruções que encontra no BIOS. As instruções do BIOS fazem coisas como testar o hardware na máquina e, em seguida, vão para o disco rígido para buscar o setor de inicialização (consulte Como funcionam os discos rígidos para obter detalhes). Este setor de boot é outro pequeno programa, e o BIOS o armazena na RAM depois de lê-lo do disco. O microprocessador então começa a executar as instruções do setor de boot da RAM. O programa do setor de inicialização dirá ao microprocessador para buscar algo mais do disco rígido para a RAM, que o microprocessador executa e assim por diante. É assim que o microprocessador carrega e executa todo o sistema operacional.

Mesmo o microprocessador incrivelmente simples mostrado no exemplo anterior terá um conjunto bastante grande de instruções que pode executar. A coleção de instruções é implementada como padrões de bits, cada um dos quais tem um significado diferente quando carregado no registrador de instrução. Os humanos não são particularmente bons em lembrar padrões de bits, então um conjunto de palavras curtas é definido para representar os diferentes padrões de bits. Esta coleção de palavras é chamada de linguagem assembly do processador. A montador pode traduzir as palavras em seus padrões de bits muito facilmente, e então a saída do montador é colocada na memória para o microprocessador executar.

Aqui está o conjunto de instruções em linguagem assembly que o designer pode criar para o microprocessador simples em nosso exemplo:

  • LOADA mem - Carregar o registro A do endereço de memória
  • LOADB mem - Carregar o registro B do endereço de memória
  • CONB con - Carregue um valor constante no registro B
  • SAVEB mem - Salvar o registro B no endereço de memória
  • SAVEC mem - Salvar o registro C no endereço de memória
  • ADICIONAR - Adicione A e B e armazene o resultado em C
  • SUB - Subtraia A e B e armazene o resultado em C
  • MUL - Multiplique A e B e armazene o resultado em C
  • DIV - Divida A e B e armazene o resultado em C
  • COM - Compare A e B e armazene o resultado no teste
  • JUMP addr - Ir para um endereço
  • JEQ addr - Salte, se igual, para o endereço
  • JNEQ addr - salto, se não igual, para o endereço
  • Endereço JG - Salte, se maior que, para endereçar
  • Endereço JGE - Salte, se maior ou igual, para o endereço
  • JL addr - Salte, se for menor que, para o endereço
  • Endereço JLE - Salte, se menor ou igual, para o endereço
  • PARE - Pare a execução

Se você leu Como funciona a programação C, então sabe que esta parte simples do código C calculará o fatorial de 5 (onde o fatorial de 5 = 5! = 5 * 4 * 3 * 2 * 1 = 120):


a = 1; f = 1; enquanto (a <= 5) f = f * a; a = a + 1;

No final da execução do programa, a variável f contém o fatorial de 5.

Linguagem assembly

UMA Compilador C traduz este código C em linguagem assembly. Supondo que a RAM comece no endereço 128 neste processador e a ROM (que contém o programa em linguagem assembly) comece no endereço 0, para o nosso microprocessador simples, a linguagem assembly pode se parecer com isto:


// Assuma que a está no endereço 128 // Assuma que F está no endereço 1290 CONB 1 // a = 1; 1 SAVEB 1282 CONB 1 // f = 1; 3 SAVEB 1294 LOADA 128 // se a> 5 pula para 175 CONB 56 COM7 JG 178 LOADA 129 // f = f * a; 9 LOADB 12810 MUL11 SAVEC 12912 LOADA 128 // a = a + 1; 13 CONB 114 ADD15 SAVEC 12816 JUMP 4 // volta para if17 STOP

ROM

Portanto, agora a pergunta é: "Como todas essas instruções aparecem na ROM?" Cada uma dessas instruções em linguagem assembly deve ser representada por um número binário. Para simplificar, vamos supor que cada instrução em assembly receba um número exclusivo, como este:

  • LOADA - 1
  • LOADB - 2
  • CONB - 3
  • SAVEB - 4
  • SAVEC mem - 5
  • ADICIONAR - 6
  • SUB - 7
  • MUL - 8
  • DIV - 9
  • COM - 10
  • Endereço JUMP - 11
  • JEQ addr - 12
  • Endereço JNEQ - 13
  • JG addr - 14
  • Endereço JGE - 15
  • JL addr - 16
  • Endereço JLE - 17
  • PARAR - 18

Os números são conhecidos como opcodes. Em ROM, nosso pequeno programa seria assim:


// Assume que a está no endereço 128 // Assume que F está no endereço 129Addr opcode / value0 3 // CONB 11 12 4 // SAVEB 1283 1284 3 // CONB 15 16 4 // SAVEB 1297 1298 1 // LOADA 1289 12810 3 // CONB 511 512 10 // COM13 14 // JG 1714 3115 1 // LOADA 12916 12917 2 // LOADB 12818 12819 8 // MUL20 5 // SAVEC 12921 12922 1 // LOADA 12823 12824 3 // CONB 125 126 6 // ADD27 5 // SAVEC 12828 12829 11 // JUMP 430 831 18 // PARE

Você pode ver que sete linhas de código C se tornaram 18 linhas de linguagem assembly, e isso se tornou 32 bytes na ROM.

Decodificação

O decodificador de instrução precisa transformar cada um dos opcodes em um conjunto de sinais que conduzem os diferentes componentes dentro do microprocessador. Vamos pegar a instrução ADD como exemplo e ver o que ela precisa fazer:

  1. Durante o primeiro ciclo de clock, precisamos realmente carregar a instrução. Portanto, o decodificador de instrução precisa: ativar o buffer tri-state para o contador do programa ativar a linha RD ativar o buffer tri-state de dados travar a instrução no registrador de instrução
  2. Durante o segundo ciclo de clock, a instrução ADD é decodificada. Ele precisa fazer muito pouco: definir a operação da ALU para travar a saída da ALU no registro C
  3. Durante o terceiro ciclo de clock, o contador do programa é incrementado (em teoria, isso poderia ser sobreposto no segundo ciclo de clock).

Cada instrução pode ser dividida como um conjunto de operações sequenciadas como essas que manipulam os componentes do microprocessador na ordem adequada. Algumas instruções, como esta instrução ADD, podem levar dois ou três ciclos de clock. Outros podem levar cinco ou seis ciclos de clock.

O número de transistores disponível tem um grande efeito no desempenho de um processador. Como visto anteriormente, uma instrução típica em um processador como um 8088 leva 15 ciclos de clock para ser executada. Por causa do design do multiplicador, levou aproximadamente 80 ciclos apenas para fazer uma multiplicação de 16 bits no 8088. Com mais transistores, multiplicadores muito mais poderosos capazes de velocidades de ciclo único tornam-se possíveis.

Mais transistores também permitem uma tecnologia chamada pipelining. Em uma arquitetura em pipeline, a execução da instrução se sobrepõe. Portanto, embora possa demorar cinco ciclos de clock para executar cada instrução, pode haver cinco instruções em vários estágios de execução simultaneamente. Dessa forma, parece que uma instrução completa cada ciclo de clock.

Muitos processadores modernos têm vários decodificadores de instrução, cada um com seu próprio pipeline. Isso permite vários fluxos de instrução, o que significa que mais de uma instrução pode ser concluída durante cada ciclo de clock. Esta técnica pode ser bastante complexa de implementar, por isso requer muitos transistores.

Tendências

A tendência no design do processador tem sido principalmente para ALUs completos de 32 bits com processadores de ponto flutuante rápidos integrados e execução em pipeline com vários fluxos de instrução. O mais novo em design de processador são as ALUs de 64 bits, e espera-se que as pessoas tenham esses processadores em seus PCs domésticos na próxima década. Também tem havido uma tendência para instruções especiais (como as instruções MMX) que tornam certas operações particularmente eficientes e a adição de suporte de memória virtual de hardware e cache L1 no chip do processador. Todas essas tendências aumentam a contagem de transistores, levando aos milhões de transistores disponíveis atualmente. Esses processadores podem executar cerca de um bilhão de instruções por segundo!

Foto cedida pela AMD

Os processadores de 64 bits estão conosco desde 1992 e, no século 21, eles começaram a se tornar populares. Tanto a Intel quanto a AMD introduziram chips de 64 bits, e o Mac G5 possui um processador de 64 bits. Processadores de 64 bits têm ALUs de 64 bits, registradores de 64 bits, barramentos de 64 bits e assim por diante.

Uma razão pela qual o mundo precisa de processadores de 64 bits é por causa de seus espaços de endereçamento ampliados. Os chips de trinta e dois bits são geralmente limitados a um máximo de 2 GB ou 4 GB de acesso à RAM. Isso parece muito, visto que a maioria dos computadores domésticos atualmente usa apenas 256 MB a 512 MB de RAM. No entanto, um limite de 4 GB pode ser um problema grave para máquinas servidoras e máquinas que executam grandes bancos de dados. E mesmo as máquinas domésticas começarão a bater contra o limite de 2 GB ou 4 GB muito em breve se as tendências atuais continuarem. Um chip de 64 bits não tem nenhuma dessas restrições porque um espaço de endereço de RAM de 64 bits é essencialmente infinito no futuro previsível - 2 ^ 64 bytes de RAM é algo na ordem de um bilhão de gigabytes de RAM.

Com um barramento de endereço de 64 bits e barramentos de dados amplos e de alta velocidade na placa-mãe, as máquinas de 64 bits também oferecem velocidades de E / S (entrada / saída) mais rápidas para coisas como unidades de disco rígido e placas de vídeo. Esses recursos podem aumentar significativamente o desempenho do sistema.

Os servidores podem definitivamente se beneficiar com 64 bits, mas e os usuários normais? Além da solução de RAM, não está claro se um chip de 64 bits oferece aos "usuários normais" quaisquer benefícios reais e tangíveis no momento. Eles podem processar dados (dados muito complexos apresentam muitos números reais) mais rapidamente. Pessoas que fazem edição de vídeo e pessoas que fazem edição fotográfica em imagens muito grandes se beneficiam desse tipo de poder de computação. Os jogos de última geração também serão beneficiados, uma vez que sejam recodificados para aproveitar os recursos de 64 bits. Mas o usuário médio que lê e-mail, navega na Web e edita documentos do Word não está realmente usando o processador dessa forma.

Para obter mais informações sobre microprocessadores e tópicos relacionados, verifique os links na próxima página.

Artigos relacionados

  • CPU Quiz
  • Por que existem limites na velocidade da CPU?
  • Como funcionam os semicondutores
  • Como funcionam os PCs
  • Como funciona a programação C
  • Como funciona o Java
  • Como funcionam os sistemas operacionais
  • Como funciona a memória do computador
  • Como funcionam os computadores quânticos
  • Como funcionam os computadores de DNA

Mais ótimos links

  • Webopedia: microprocessador
  • Clique na CPU
  • Atualizações de processador
  • Comparações de CPU de 6ª geração
  • Comparações de CPU de 7ª geração
  • Pontuações de Benchmark TSCP



Ainda sem comentários

Os artigos mais interessantes sobre segredos e descobertas. Muitas informações úteis sobre tudo
Artigos sobre ciência, espaço, tecnologia, saúde, meio ambiente, cultura e história. Explicando milhares de tópicos para que você saiba como tudo funciona