Processador multinúcleo (múltiplos núcleos, do inglês multicore) é o que tem dois ou mais núcleos de processamento (cores) no interior de um único chip. Estes dois ou mais núcleos são responsáveis por dividir as tarefas entre si, ou seja, permitem trabalhar em um ambiente multitarefa. Em processadores de um só núcleo, as funções de multitarefa podem ultrapassar a capacidade da CPU, o que resulta em queda no desempenho enquanto as operações aguardam para serem processadas. Em processadores de múltiplos núcleos o sistema operacional trata cada um desses núcleos como um processador diferente. Na maioria dos casos, cada unidade possui seu próprio cache e pode processar várias instruções quase simultaneamente. Adicionar novos núcleos de processamento a um processador (único encapsulamento) possibilita que as instruções das aplicações sejam executadas em paralelo, como se fossem 2 ou mais processadores distintos.
Os dois núcleos não somam a capacidade de processamento, mas dividem as tarefas entre si. Por exemplo, um processador de dois núcleos com clock de 1.8 GHz não equivale a um processador de um núcleo funcionando com clock de 3.6 Ghz, e sim dois núcleos 1,8GHZ operando em paralelo. O termo multinúcleo ou multicore (como é popularmente conhecido), são por vezes utilizados para descrever arquiteturas multicore com um número particularmente elevado de núcleos (dezenas ou centenas).
O surgimento dos processadores multicore, tornou-se necessário principalmente devido a missão cada vez mais difícil de resfriar processadores singlecore (processadores de apenas um núcleo) com clocks cada vez mais altos; devido a concentração cada vez maior de transistores cada vez menores em um mesmo circuito integrado. E além dessa e outras limitações dos processadores singlecore, existe a grande diferença entre a velocidade da memória e do processador, aliada à estreita banda de dados, que faz com que aproximadamente 75 por cento do uso do microprocessador seja gasto na espera por resultados dos acessos à memória.
Descrição
Na maioria dos processadores de mais de um núcleo, cada núcleo pode possuir sua própria cache e alguns casos realizam acesso direto e independente à memória principal; possibilita-se, assim, que as instruções de aplicações sejam executadas em paralelo, ou seja, cada processador realiza os cálculos de que é requisitado concorrentemente com o outro, ganhando desempenho. Este, porém, depende muito dos algoritmos de software utilizados e de suas implementações.
Outra vantagem do processamento em paralelo é a capacidade de cada processador ficar responsável pela execução de um aplicativo, como por exemplo, quando o usuário está executando algum arquivo de som e ao mesmo tempo executando a varredura do antivírus.
A diferença desse processamento paralelo e do até então usado nos processadores singlecore pode ser visto nas figuras abaixo; observe o gargalo (bottleneck) criado pelos aplicativos executados simultaneamente no singlecore, e como ele desaparece na figura com os dois núcleos (cores).
Surgimento
Embora a tecnologia de fabricação tenha melhorado, reduzindo o tamanho de processadores individuais, limites físicos de semicondutores baseados em microeletrônica haviam se tornado uma preocupação principal. Estas limitações físicas poderiam causar dissipação de calor significativa e problemas de sincronização de dados. Vários métodos foram e estão sendo usados para melhorar o desempenho da CPU. Alguns paralelismos por nível de instrução (ILP), métodos como pipelining superescalares são adequados para muitas aplicações, mas são ineficientes para os que são difíceis de prever código. Muitas aplicações são mais adequadas para paralelismo por nível de thread (TLP), métodos e múltiplas CPUs independentes são comumente usados para aumentar a TLP geral de um sistema. Uma combinação de espaço disponível aumentou (devido a processos de fabricação refinados) e a demanda por TLP aumento e levou ao desenvolvimento de CPUs multi-core.
Incentivos Comerciais
Vários negócios impulsionaram o desenvolvimento da arquitetura multicore. Durante décadas, foi possível melhorar o desempenho de uma CPU, reduzindo a área do circuito integrado, que diminuiu o custo por dispositivo. Como alternativa, mais transistores poderiam ser utilizados no projeto, o que aumentou a funcionalidade, especialmente para as arquiteturas CISC. Eventualmente, estas técnicas atingiram o seu limite e não puderam continuar a melhorar o desempenho da CPU. Múltiplos processadores tiveram que ser empregados para ganhar velocidade no processamento. Vários núcleos foram usados no mesmo chip para melhorar o desempenho, o que poderia então levar a melhores vendas de CPUs que tinham dois ou mais núcleos.
Vantagens
Uma das principais vantagens dos processadores multicore é também um dos principais motivos da sua invenção. Essa vantagem é a sua maior capacidade - comparado aos singlecores - de resfriamento; o que ainda possibilitou e ainda possibilita o aumento do poder de processamento.
Economia no preço de licenciamento de softwares proprietários, passando a ter um maior poder de processamento sem necessitar de uma nova máquina.
Processadores multicore também permitem maior desempenho com menor energia. Isso pode ser um fator importante em dispositivos móveis que funcionam com baterias. Uma vez que cada núcleo em multicore é geralmente mais eficiente em termos energéticos, o chip se torna mais eficiente do que ter um grande núcleo único e monolítico.
As outras vantagens quase que por completo relacionam-se com a capacidade de processamento, principalmente quando se trata da execução de mais de um aplicativo ao mesmo tempo ou mesmo e aplicativos capazes de realizar o seu processamento paralelamente, conseguindo assim trabalhar com dois ou mais núcleos concomitantemente. Nos processadores mais recentemente desenvolvidos existe também uma melhora no acesso a memória e na troca de dados entre os próprios núcleos.
Porém, é importante destacar também que para que a qualidade de processamento paralelo dos multicores seja utilizada na sua totalidade os softwares instalados na máquina devem ser escritos para aproveitar esse recurso; para isso as aplicações devem ser escritas utilizando e armazenando os conceitos de threads, assim uma única aplicação utilizará o poder de processamentos dos dois ou mais processadores.
Desvantagens
Processadores multicore possuem um bom desempenho, performance, disponibilidade e segurança a um menor custo. Por outro lado, esta tecnologia possui algumas desvantagens, entre as principais podemos destacar:
O aumento da utilização dos recursos computacionais fornecidos por processadores multicore requerem ajustes, tanto para o sistema operacional de apoio quanto para o software aplicativo já existente.
A capacidade dos processadores multi-core depende da utilização de vários segmentos dentro das aplicações para aumentar o desempenho da aplicação.
Arquitetura
Com o surgimento dos multicores tornou-se necessário algumas adaptações a nível de arquitetura para o melhor aproveitamento dos seus núcleos, e as primeiras a serem feitas tem como objetivo melhorar o paralelismo a nível de threads e assim criar uma arquitetura que propicie o chamado paralelismo ao nível do chip.
Algumas vantagens da arquitetura são: a melhor localização dos dados em se comparando com outras arquiteturas de multiprocessamento; a melhor comunicação entre as unidades e o número reduzido de quantidade de espaço e energia necessários.
A arquitetura é geralmente um SMP, ou seja, um multiprocessamento simétrico; implementado em um circuito VLSI - Very Large Scale Integration. Essa é uma arquitetura onde dois ou mais processadores idênticos são ligados a uma única memória principal. Porém ao SMP existem outras alternativas de se criar uma arquitetura com variantes para o tratamento da memória ou até mesmo a comunicação entre os diversos núcleos presentes no processador. Algumas dessas variantes podem ser observadas nos artigos abaixo:
Exemplos de Hardware
Segue abaixo alguns exemplos de hardware que utilizam a tecnologia multi-core.
Comercial
- AMD
- Athlon 64, Athlon 64 FX e Athlon 64 X2, processadores AMD Athlon™ para desktops.
- Athlon II, processador AMD Athlon™ II Dual-Core para desktops.
- Phenom, processador AMD Phenom™ X4 de quatro núcleos e AMD Phenom™ X3 de três núcleos para desktops.
- Phenom II, processador multi-core. Oferece uma melhor experiência visual para entretenimento de alta definição, desempenho avançado em multitarefa e inovações de economia de energia, proporcionando máquinas menores e mais refrigeradas, com uso eficiente da energia.
- Sempron, processador AMD Sempron™ para desktops.
- Turion 64 X2, processador dual-core para laptop.
- Opteron, processador para servidores.
- IBM
- POWER5, processador dual-core, lançado em 2004.
- POWER6, processador dual-core, lançado em 2007.
- POWER7, processadores 4,6,8-core, lançados em 2010.
- PowerPC 970MP, processador dual-core usado na Apple Power Mac G5.
- Xenon, processador triple-core, usado pela Microsoft no Xbox 360.
- Intel
- Celeron Dual-Core, primeiro processador dual-core comercializado.
- Core Duo, processador dual-core.
- Core 2 Duo, processador dual-core.
- Core 2 Quad, 2 processadores dual-core embutido em um multi-chip.
- Core i3, Core i5 e Core i7, família de processadores multi-core. São os sucessores do Core 2 Duo e do Core 2 Quad.
- Itanium 2, processador dual-core.
- Pentium D, 2 single-core embutido em um multi-chip.
- Pentium Extreme Edition, 2 single-core embutido em um multi-chip.
- Pentium Dual-Core, processador dual-core.
- Xeon processadores dual-, quad-, hexa-, octo- e 12-core.
- Nvidia
- GeForce 9 Series multi-core, a Unidade de processamento gráfico possui 8 cores e 16 Scalar processor/Stream processing por core.
- GeForce 200 Series multi-core, a Unidade de processamento gráfico possui 10 cores e 24 Scalar processor/Stream processing por core.
- Tesla multi-core, a GPGPU possui 10 cores e 24 Scalar processor/Stream processing por core.
Free
Futuro dos Multicore
O MIT, Instituto de Tecnologia de Massachusetts, anunciou um processador com 64 núcleos, cujo design difere drasticamente dos processadores existentes hoje[1]. O novo chip, chamado Tile64, evita o que é hoje o maior gargalo no desempenho dos processadores multicores e ele consome menos energia.
Nos processadores multicores existentes hoje, cada núcleo se comunica com o outro através de um barramento comum. Se pensarmos em dois ou quatro núcleos dividindo um barramento, a performance não é muito afetada. Quando pensamos em 16 ou mais núcleos sendo usados ao mesmo tempo, a historia é completamente diferente. Este é o maior gargalo no desempenho dos processadores multicores.
O Tile64 não possui um barramento central. Ao invés disso, os núcleos estão diretamente conectados. Cada núcleo possui todas as características de um processador e memória. O novo conceito aplicado nesses processadores é a estrutura de malha na conexão entre os núcleos. Essa estrutura é similar à encontrada na Internet, uma rede que possui vários nós descentralizados. Uma razão que faz a Internet capaz de transmitir dado tão rapidamente é que os pacotes de informação são enviados através de uma vasta rede interligada, evitando assim o congestionamento desses pacotes. Essa nova arquitetura abre portas para que novos processadores recebam números cada vez maiores de núcleos. A existência de um número tão grande de cores, começa a requerer a utilização de um esquema de manipulação próximo a grades computacionais.
Veja Também
- Condição de corrida
- Multiprocessamento
- Multiprocessamento simétrico (SMP)
- Multitarefa
- Computação paralela
- Thread (ciência da computação)
- Compute Unified Device Architecture
- OpenCL