Anonim

Quando os computadores pessoais foram inventados, sua unidade central de processamento (CPU) ficava sozinha e tinha apenas um núcleo de processador. O próprio processador era o núcleo; a idéia de ter um processador de múltiplos núcleos ainda era desconhecida. Hoje, não é incomum ver computadores, telefones e outros dispositivos com múltiplos núcleos - de fato, praticamente todos os computadores disponíveis comercialmente de qualquer tipo têm vários núcleos. Esses núcleos residem na mesma, única, CPU ou Unidade Central de Processamento.

Ter vários núcleos é uma grande vantagem. Com apenas um núcleo, um computador pode trabalhar apenas em uma tarefa por vez, tendo que concluir uma tarefa antes de passar para outra. Com mais núcleos, no entanto, um computador pode trabalhar em várias tarefas ao mesmo tempo, o que é especialmente útil para quem faz muitas tarefas múltiplas.

Antes de abordar exatamente como os processadores multicore funcionam, é importante falar um pouco sobre a história de fundo da tecnologia de processamento, após o qual discutiremos o que os processadores multicore fazem.

Alguma História

Antes da criação de processadores com vários núcleos, pessoas e empresas como Intel e AMD tentaram construir computadores com várias CPUs. O que isso significava era que era necessária uma placa-mãe com mais de um soquete de CPU. Isso não só foi mais caro, devido ao hardware físico necessário para outro soquete da CPU, mas também aumentou a latência, devido ao aumento da comunicação necessária entre os dois processadores. Uma placa-mãe teve que dividir os dados entre dois locais completamente separados em um computador, em vez de simplesmente enviá-los para o processador. A distância física de fato significa que um processo é mais lento. Colocar esses processos em um chip com vários núcleos não significa apenas que há menos distância para viajar, mas também significa que núcleos diferentes podem compartilhar recursos para executar tarefas particularmente pesadas. Por exemplo, os chips Pentium II e Pentium III da Intel foram implementados em versões com dois processadores em uma placa-mãe.

Depois de um tempo, os processadores precisavam ser mais poderosos, então os fabricantes de computadores criaram o conceito de hiperencadeamento. O conceito em si veio da Intel e foi concebido em 2002 nos processadores de servidor Xeon da empresa e, posteriormente, nos processadores de desktop Pentium 4. O Hyper-threading ainda é usado hoje em processadores e é até a principal diferença entre os chips i5 da Intel e seus chips i7. Basicamente, tira proveito do fato de que geralmente existem recursos não utilizados em um processador, especificamente quando as tarefas não exigem muito poder de processamento, que pode ser usado em outros programas. Um processador que usa hyper-threading basicamente se apresenta a um sistema operacional como se tivesse dois núcleos. Obviamente, ele realmente não tem dois núcleos; no entanto, para dois programas que usam metade da capacidade de processamento disponível ou menos, também pode haver dois núcleos devido ao fato de que juntos eles podem tirar proveito de toda a energia que o processador tem a oferecer. No entanto, o hiperencadeamento será um pouco mais lento que um processador com dois núcleos quando não houver poder de processamento suficiente para compartilhar entre os dois programas que usam o núcleo.

Você pode encontrar um vídeo perspicaz, fornecendo uma explicação breve e mais detalhada sobre hyper-threading aqui.

Multiprocessadores

Após muita experimentação, as CPUs com múltiplos núcleos finalmente puderam ser construídas. O que isso significava era que um único processador tinha basicamente mais de uma unidade de processamento. Por exemplo, um processador dual-core possui duas unidades de processamento, um quad-core possui quatro e assim por diante.

Então, por que as empresas desenvolveram processadores com múltiplos núcleos? Bem, a necessidade de processadores mais rápidos estava se tornando cada vez mais aparente, porém os desenvolvimentos nos processadores de núcleo único estavam diminuindo. Entre os anos 80 e 2000, os engenheiros conseguiram aumentar a velocidade de processamento de vários megahertz para vários gigahertz. Empresas como Intel e AMD fizeram isso diminuindo o tamanho dos transistores, o que permitiu mais transistores na mesma quantidade de espaço, melhorando assim o desempenho.

Devido ao fato de a velocidade do clock do processador estar muito ligada a quantos transistores cabem em um chip, quando a tecnologia de encolhimento do transistor começou a desacelerar, o desenvolvimento de velocidades aumentadas do processador também começou a desacelerar. Embora não tenha sido o momento em que as empresas souberam sobre processadores com vários núcleos, foi quando começaram a experimentar com processadores com vários núcleos para fins comerciais. Embora os processadores com vários núcleos tenham sido desenvolvidos pela primeira vez em meados dos anos 80, eles foram projetados para grandes corporações e não foram revisitados até que a tecnologia de núcleo único começou a desacelerar. O primeiro processador multinúcleo foi desenvolvido pela Rockwell International e era uma versão do chip 6501 com dois processadores 6502 em um chip (mais detalhes estão disponíveis aqui nesta entrada da Wikipedia).

O que faz um processador multinúcleo?

Bem, é tudo muito simples. Ter vários núcleos permite que várias coisas sejam feitas ao mesmo tempo. Por exemplo, se você estiver trabalhando em e-mails, tiver um navegador da Internet aberto, estiver trabalhando em uma planilha do Excel e estiver ouvindo música no iTunes, um processador quad-core poderá trabalhar em todas essas coisas ao mesmo tempo. Ou, se um usuário tiver uma tarefa que precise ser concluída imediatamente, poderá ser dividida em tarefas menores e mais fáceis de processar.

O uso de múltiplos núcleos também não se limita apenas a vários programas. Por exemplo, o Google Chrome processa cada nova página com um processo diferente, o que significa que ele pode tirar proveito de vários núcleos ao mesmo tempo. Alguns programas, no entanto, são chamados de thread único, o que significa que eles não foram escritos para poder usar vários núcleos e, como tal, não podem fazê-lo. O Hyper-threading novamente entra em jogo aqui, permitindo que o Chrome envie várias páginas para dois "núcleos lógicos" em um núcleo real.

Andando de mãos dadas com processadores multinúcleo e hyper-threading é um conceito chamado multithreading. Multithreading é essencialmente a capacidade de um sistema operacional tirar proveito de vários núcleos, dividindo o código em sua forma mais básica, ou threads, e alimentando-o para diferentes núcleos simultaneamente. Obviamente, isso é importante em multiprocessadores e também em múltiplos núcleos. A multiencadeamento é um pouco mais complexa do que parece, pois requer que os sistemas operacionais solicitem o código corretamente, de forma que o programa possa continuar a funcionar com eficiência.

Os próprios sistemas operacionais fazem coisas semelhantes com processos próprios - não se limitam apenas aos aplicativos. Processos do sistema operacional são coisas que o sistema operacional está sempre fazendo em segundo plano, sem que o usuário o saiba necessariamente. Devido ao fato desses processos estarem sempre em andamento, ter hyper-threading e / ou múltiplos núcleos pode ser muito útil, pois libera o processador para poder trabalhar em outras coisas, como o que está acontecendo nos aplicativos.

Como os processadores multi-core funcionam?

Primeiro, a placa-mãe e o sistema operacional precisam reconhecer o processador e que existem vários núcleos. Os computadores mais antigos tinham apenas um núcleo; portanto, um sistema operacional mais antigo pode não funcionar muito bem se um usuário tentar instalá-lo em um computador mais novo com vários núcleos. O Windows 95, por exemplo, não suporta hyper-threading ou múltiplos núcleos. Todos os sistemas operacionais recentes suportam processadores com vários núcleos, incluindo Windows 7, 8, o recém-lançado 10 e o OS X 10.10 da Apple.

Basicamente, o sistema operacional informa à placa-mãe que um processo precisa ser feito. A placa-mãe informa ao processador. Em um processador com vários núcleos, o sistema operacional pode dizer ao processador para fazer várias coisas ao mesmo tempo. Essencialmente, através da direção do sistema operacional, os dados são movidos do disco rígido ou RAM, via placa-mãe, para o processador.

Processador multinúcleo

Dentro de um processador, existem vários níveis de memória cache que mantêm dados para a próxima operação ou operações do processador. Esses níveis de memória cache garantem que o processador não precise procurar muito para encontrar seu próximo processo, economizando muito tempo. O primeiro nível de memória cache é o cache L1. Se o processador não conseguir encontrar os dados necessários para o próximo processo no cache L1, ele procurará no cache L2. O cache L2 é maior na memória, mas é mais lento que o cache L1.

Processador de núcleo único

Se um processador não conseguir encontrar o que está procurando no cache L2, ele continuará na linha até L3 e, se houver um processador, L4. Depois disso, ele procurará na memória principal ou na RAM de um computador.

Também existem maneiras diferentes pelas quais processadores diferentes lidam com os caches de diferença. Por exemplo, alguns duplicam os dados no cache L1 no cache L2, o que é basicamente uma maneira de garantir que o processador possa encontrar o que está procurando. Obviamente, isso ocupa mais memória no cache L2.

Diferentes níveis de cache também entram em jogo nos processadores com vários núcleos. Normalmente, cada núcleo terá seu próprio cache L1, mas eles compartilharão o cache L2. Isso é diferente de se houvesse vários processadores, porque cada processador possui seu próprio L1, L2 e qualquer outro cache de nível. Com vários processadores de núcleo único, o compartilhamento de cache simplesmente não é possível. Uma das principais vantagens de ter um cache compartilhado é a capacidade de usá-lo ao máximo, devido ao fato de que, se um núcleo não estiver usando o cache, o outro poderá.

Em um processador com vários núcleos, ao pesquisar dados, um núcleo pode procurar seu próprio cache L1 exclusivo e, em seguida, ramificar-se para o cache L2 compartilhado, a RAM e, eventualmente, o disco rígido.

É provável que continuemos a ver o desenvolvimento de mais núcleos. A velocidade do clock do processador certamente continuará melhorando, embora a taxas mais lentas do que antes. Embora agora não seja incomum ver processadores octa-core em coisas como smartphones, em breve poderemos ver processadores com dezenas de núcleos.

Para onde você acha que a tecnologia de processamento multi-core será a seguir? Informe-nos nos comentários abaixo ou inicie um novo tópico em nosso fórum da comunidade.

Tudo sobre processadores com vários núcleos: o que são, como funcionam e de onde vieram