Unidade central de processamento
Uma unidade central de processamento (CPU) é uma parte importante de cada computador. A CPU envia sinais para controlar as outras partes do computador, quase como um cérebro controla um corpo.
A CPU é uma máquina eletrônica que funciona em uma lista de coisas de computador a fazer, chamadas instruções. Ela lê a lista de instruções e executa (executa) cada uma delas em ordem. Uma lista de instruções que uma CPU pode executar é um programa de computador.
A velocidade do relógio, ou velocidade das partes internas de uma CPU, é medida em hertz (Hz). Os processadores modernos muitas vezes rodam tão rápido que se usa gigahertz (GHz) em seu lugar. Um GHz é de 1.000.000.000 de ciclos por segundo.
A maioria das CPUs usadas em computadores desktop (domésticos) são microprocessadores feitos pela Intel ou por Micro Dispositivos Avançados (geralmente abreviados para AMD). Algumas outras empresas que fazem CPUs são ARM, IBM, e AMD sob a ATI Technologies, que é a líder no momento. A maioria de suas CPUs são usadas em sistemas incorporados para coisas mais especializadas, como em telefones celulares, carros, consoles de jogos, ou no exército.
Uma CPU Pentium dentro de um computador
Tipos de CPUs
No século 20, os engenheiros inventaram muitas arquiteturas de computadores diferentes. Atualmente, a maioria dos computadores de mesa usa CPUs de 32 bits ou CPUs de 64 bits. As instruções em uma CPU de 32 bits são boas para lidar com dados de 32 bits (a maioria das instruções "pensam" em 32 bits em uma CPU de 32 bits). Da mesma forma, uma CPU de 64 bits é boa em lidar com dados de 64 bits (e muitas vezes também é boa em lidar com dados de 32 bits). O tamanho dos dados que uma CPU lida melhor é muitas vezes chamado de tamanho da palavra CPU. Muitas CPUs antigas dos anos 70, 80 e início dos anos 90 (e muitos sistemas incorporados modernos) têm um tamanho de palavra de 8 bits ou 16 bits. Quando as CPUs foram inventadas em meados do século 20, elas tinham muitos tamanhos de palavras diferentes. Algumas tinham tamanhos de palavras diferentes para instruções e dados. Os tamanhos de palavras menos populares mais tarde deixaram de ser usados.
A maioria das CPUs são microprocessadores. Isto significa que a CPU é apenas um único chip. Alguns chips com microprocessadores dentro deles também contêm outros componentes, e são "computadores" mono-chip completos. Isto é chamado de microcontrolador.
Registros
Quando a CPU executa um programa de computador, ela precisa de algum lugar para armazenar os dados em que as instruções operam (os dados que eles lêem e escrevem). Este armazenamento é chamado de registro. Uma CPU normalmente tem muitos registros. Os registros devem ser muito rápidos para acessar (para ler e escrever). Portanto, eles são parte do próprio chip da CPU.
Memória
O armazenamento de todos os dados em registros tornaria a maioria das CPUs muito complicada (e muito cara). Portanto, os registros geralmente armazenam apenas os dados nos quais a CPU está trabalhando "agora mesmo". O restante dos dados utilizados pelo programa é armazenado na RAM (memória). Exceto nos microcontroladores, a RAM normalmente é armazenada fora da CPU em chips separados.
Quando a CPU quer ler ou escrever dados na RAM, ela emite um endereço para esses dados. Cada byte na RAM tem um endereço de memória. O tamanho dos endereços é muitas vezes o mesmo que o tamanho da palavra: Uma CPU de 32 bits usa endereços de 32 bits, etc. Entretanto, as CPUs menores, como as CPUs de 8 bits, freqüentemente usam endereços maiores que o tamanho da palavra. Caso contrário, o comprimento máximo do programa seria muito curto.
Como o tamanho dos endereços é limitado, a quantidade máxima de memória também é limitada. Processadores de 32 bits normalmente só podem lidar com até 4 GB de RAM. Este é o número de bytes diferentes que podem ser selecionados usando um endereço de 32 bits (cada bit pode ter dois valores-0 e 1 e 232 bytes é 4 GB). Um processador de 64 bits pode ser capaz de lidar com até 16 EB de RAM (16 exabytes, cerca de 16 bilhões de GB, ou 16 bilhões de bytes). O sistema operacional pode limitá-lo ao uso de quantidades menores.
As informações que são armazenadas na RAM são geralmente voláteis. Isto significa que ela desaparecerá se o computador for desligado.
Cache
Nos computadores modernos, a RAM é muito mais lenta do que os registros, portanto, o acesso à RAM torna os programas mais lentos. Para acelerar os acessos à memória, um tipo mais rápido de memória chamado cache é freqüentemente colocado entre a RAM e as partes principais da CPU. O cache é geralmente uma parte do próprio chip da CPU, e é muito mais caro por byte do que a RAM. O cache armazena os mesmos dados que a RAM, mas normalmente é muito menor. Portanto, todos os dados usados pelo programa podem não caber no cache. O cache tenta armazenar dados que provavelmente serão muito usados. Exemplos incluem dados usados recentemente e dados fechados na memória para dados usados recentemente.
Muitas vezes faz sentido ter um "cache para o cache", assim como faz sentido ter um cache para a RAM. No caching multinível, há muitos caches, chamados de cache L1, cache L2, e assim por diante. O cache L1 é o cache mais rápido (e mais caro por byte) e é o "mais próximo" da CPU. O cache L2 está a um passo de distância e é mais lento que o cache L1, etc. O cache L1 pode freqüentemente ser visto como um cache para o cache L2, etc.
Ônibus
Os ônibus de computador são os fios usados pela CPU para se comunicar com a RAM e outros componentes do computador. Quase todas as CPUs têm pelo menos um barramento de dados - usado para ler e escrever dados - e um barramento de endereços - usado para emitir endereços. Outros barramentos dentro da CPU transportam dados para diferentes partes da CPU.
Conjuntos de instruções
Um conjunto de instruções (também chamado ISA - Instruction Set Architecture) é uma linguagem entendida diretamente por uma determinada CPU. Estes idiomas também são chamados de código de máquina ou binário. Elas dizem como você diz à CPU para fazer coisas diferentes, como carregar dados da memória em um registro, ou adicionar os valores de dois registros. Cada instrução em um conjunto de instruções tem uma codificação, que é como a instrução é escrita como uma seqüência de bits.
Os programas escritos em linguagens de programação como C e C++ não podem ser executados diretamente pela CPU. Eles devem ser traduzidos em código de máquina antes que a CPU possa executá-los. Um compilador é um programa de computador que faz esta tradução.
O código da máquina é apenas uma seqüência de 0s e 1s, o que torna difícil para os humanos lê-lo. Para torná-lo mais legível, os programas de código de máquina são geralmente escritos em linguagem de montagem. A linguagem de montagem usa texto em vez de 0s e 1s: Você pode escrever "LD A,0" para carregar o valor 0 no registro A, por exemplo. Um programa que traduz a linguagem de montagem em código de máquina é chamado de assembler.
Funcionalidade
Aqui estão algumas das coisas básicas que uma CPU pode fazer:
- Ler dados da memória e gravar dados na memória.
- Acrescentar um número a outro número.
- Teste para ver se um número é maior que outro número.
- Mover um número de um lugar para outro (por exemplo, de um registro para outro, ou entre um registro e a memória).
- Saltar para outro lugar na lista de instruções, mas somente se algum teste for verdadeiro (por exemplo, somente se um número for maior que outro).
Mesmo programas muito complicados podem ser feitos através da combinação de muitas instruções simples como estas. Isto é possível porque cada instrução leva um tempo muito curto para acontecer. Muitas CPUs hoje podem fazer mais de 1 bilhão (1.000.000.000) de instruções em um único segundo. Em geral, quanto mais uma CPU pode fazer em um determinado tempo, mais rápido ele é. Uma maneira de medir a velocidade de um processador é o MIPS (Million Instructions Per Second). Flops (Floating-point operations per second) e a velocidade do relógio da CPU (geralmente medida em gigahertz) também são maneiras de medir quanto trabalho um processador pode fazer em um determinado tempo.
Uma CPU é construída a partir de portões lógicos; não tem peças móveis. A CPU de um computador é conectada eletronicamente a outras partes do computador, como a placa de vídeo, ou a BIOS. Um programa de computador pode controlar esses periféricos lendo ou escrevendo números em lugares especiais na memória do computador.
Dutos de instrução
Cada instrução executada por uma CPU é normalmente feita em muitas etapas. Por exemplo, os passos para executar uma instrução "INC A" (aumentar o valor armazenado no registro A em um) em uma simples CPU poderia ser este:
- Leia a instrução de memória,
- decodificar a instrução (descodificar o que a instrução faz), e
- adicionar um para registrar A.
Diferentes partes da CPU fazem essas coisas diferentes. Muitas vezes é possível executar algumas etapas a partir de instruções diferentes ao mesmo tempo, o que torna a CPU mais rápida. Por exemplo, podemos ler uma instrução da memória ao mesmo tempo em que decodificamos outra instrução, uma vez que essas etapas utilizam módulos diferentes. Isto pode ser pensado como tendo muitas instruções "dentro da tubulação" ao mesmo tempo. No melhor dos casos, todos os módulos estão trabalhando em instruções diferentes ao mesmo tempo, mas isto nem sempre é possível.
Unidades de gerenciamento de memória (MMUs) e memória virtual
As CPUs modernas usam freqüentemente uma unidade de gerenciamento de memória (MMU). Uma MMU é um componente que traduz endereços da CPU para (geralmente) diferentes endereços de RAM. Ao usar uma MMU, os endereços usados em um programa não são (geralmente) os endereços "reais" onde os dados são armazenados. Isto é chamado de memória virtual (o oposto de memória "real"). Algumas das razões pelas quais é bom ter uma MMU estão listadas abaixo:
- Uma MMU pode "esconder" a memória de outros programas de um programa. Isto é feito não traduzindo nenhum endereço para os endereços "escondidos" enquanto o programa está sendo executado. Isto é bom porque significa que os programas não podem ler e modificar a memória de outros programas, o que melhora a segurança e a estabilidade. (Programas não podem "espionar" uns aos outros, ou "pisar nos dedos dos pés uns dos outros").
- Muitas MMUs podem tornar algumas partes da memória não graváveis, não legíveis ou não executáveis (o que significa que o código armazenado naquela parte da memória não pode ser executado). Isto pode ser bom por razões de estabilidade e segurança, bem como por outras razões.
- As MMUs permitem que diferentes programas tenham diferentes "visões" de memória. Isto é útil em muitas situações diferentes. Por exemplo, sempre será possível ter o código "principal" de um programa no mesmo endereço (virtual) sem colidir com outros programas. Também é útil quando há muitos códigos diferentes (de bibliotecas) que são compartilhados entre programas.
- As MMUs permitem que o código das bibliotecas apareça em endereços diferentes cada vez que um programa é executado. Isto é bom porque não saber onde as coisas estão na memória muitas vezes torna mais difícil para os hackers fazer com que os programas façam coisas ruins. Isto é chamado de randomização de espaço de endereços.
- Programas e sistemas operacionais avançados podem usar truques com MMUs para evitar a necessidade de copiar dados entre diferentes lugares na memória.
Núcleos múltiplos
Os processadores multi-core tornaram-se comuns no início do século 21. Isto significa que eles têm muitos processadores construídos com o mesmo chip para que possam executar muitas instruções ao mesmo tempo. Alguns processadores podem ter até trinta e dois núcleos, como o AMD Epyc 7601.
Fabricantes
As seguintes empresas fazem CPUs de computadores:
- ARM
- Intel
- Micro dispositivos avançados
- MCST
- SRISA
- Sun Microsystems
Mais informações
- Microprocessador
- ALU
- Unidade de execução
- Unidade de ponto flutuante
- Intel
- AMD
Perguntas e Respostas
P: O que é uma CPU?
R: Uma CPU (unidade central de processamento) é uma parte importante de todo computador. Ela envia sinais para controlar as outras partes do computador, quase como um cérebro controla um corpo. A CPU é uma máquina eletrônica que trabalha em uma lista de instruções para realizar certas tarefas.
P: Como funciona a CPU?
R: A CPU lê a lista de instruções e executa (executa) cada uma delas em ordem. Uma lista de instruções que uma CPU pode executar é um programa de computador.
P: Qual é a taxa ou velocidade de uma CPU medida em?
R: A freqüência ou velocidade das partes internas de uma CPU é medida em hertz (Hz). Os processadores modernos geralmente rodam tão rápido que se usa gigahertz (GHz) - um GHz sendo 1.000.000.000 de ciclos por segundo.
P: Quem são algumas companhias que fazem CPUs?
R: Algumas companhias que fazem CPUs são Intel, Advanced Micro Devices (AMD), ARM (recentemente comprada pela Nvidia), IBM e AMD sob a ATI Technologies, que atualmente lidera o mercado.
P: Onde a maioria das CPUs são usadas?
R: A maioria das CPUs usadas em computadores desktop são microprocessadores feitos pela Intel ou pela AMD, enquanto a maioria das outras são usadas em sistemas embutidos para coisas mais especializadas, tais como telefones celulares, carros, consoles de videogame ou aplicações militares.