Android

Chips Multicore Pose Próximo Grande Desafio para a Indústria

Multi Core Processors Explained - Single Core, Dual Core, Quad Core, Octa Core CPUs

Multi Core Processors Explained - Single Core, Dual Core, Quad Core, Octa Core CPUs
Anonim

A adição de mais núcleos de processamento emergiu como a principal forma de melhorar o desempenho dos chips para servidores e PCs, mas os benefícios serão muito reduzidos se a indústria não conseguir superar certos desafios de hardware e programação, participantes da Multicore Expo em Santa Clara A maioria dos softwares atuais ainda é escrita para chips single-core e precisará ser reescrita ou atualizada para aproveitar o crescente número de núcleos que a Intel, a Sun Microsystems e outras fabricantes de chips estão adicionando. seus produtos, disse Linley Gwennap, presidente e analista principal do The Linley Group.

Os aplicativos de prateleira geralmente são executados mais rápido em CPUs com até quatro núcleos de processador, mas além desse desempenho Nivelar e pode até se deteriorar como mais núcleos são adicionados, disse ele. Um relatório recente da Gartner também destacou o problema.

Fabricantes de chips e criadores de sistemas começaram os esforços para educar os desenvolvedores e fornecer a eles melhores ferramentas para programação multicore. Um ano atrás, a Intel e a Microsoft disseram que investiriam US $ 20 milhões para abrir dois centros de pesquisa em universidades dos EUA dedicados a enfrentar o problema. A falta de ferramentas de programação multicore para desenvolvedores mainstream é talvez o maior desafio que a indústria enfrenta hoje, disse Gwennap.

Escrevendo aplicativos de uma maneira que permite diferentes partes de uma tarefa de computação, como resolver um problema de matemática ou renderizar uma imagem, ser dividido e executado simultaneamente em vários núcleos não é novo. Mas esse modelo, muitas vezes chamado de computação paralela, tem sido limitado até agora principalmente a ambientes de computação especializados e de alto desempenho.

Mas nos últimos anos, a Intel e a Advanced Micro Devices vêm adicionando núcleos como uma maneira mais eficiente de impulsionar desempenho de chip, uma mudança marcante de sua prática tradicional de aumentar a velocidade do clock. A Intel está construindo oito núcleos em seus próximos chips Nehalem-EX, e a AMD está projetando chips de 12 núcleos para servidores. Eles também estão adicionando recursos de multiencadeamento, que permitem que cada núcleo trabalhe em várias linhas de código ao mesmo tempo.

Isso significa que os aplicativos principais precisam ser escritos de uma maneira diferente para aproveitar os núcleos adicionais disponíveis.. O trabalho é difícil de fazer e cria o potencial para novos tipos de erros de software. Uma das mais comuns é "condições de corrida", em que a saída de um cálculo depende dos vários elementos de uma tarefa que está sendo concluída em uma determinada ordem. Se não estiverem, podem ocorrer erros.

Algumas ferramentas de programação paralela estão disponíveis, como o Parallel Studio da Intel para C e C ++. Outros fornecedores no espaço são Codeplay, Polycore Software e Clik Arts. Há também um novo modelo de programação paralela baseada em C chamado OpenCL, sendo desenvolvido pelo Khronos Group e apoiado pela Apple, Intel, AMD, Nvidia e outros.

Mas muitas das ferramentas disponíveis ainda estão em andamento, participantes do a Multicore Expo disse. Os compiladores de software precisam ser capazes de identificar códigos que possam ser paralelizados, e então fazer o trabalho de paralelizá-los sem intervenção manual de programadores, disse Shay Gal-on, diretor de engenharia de software da EEMBC, uma organização sem fins lucrativos que desenvolve benchmarks para chips integrados

Apesar da falta de ferramentas, alguns fornecedores de software acharam relativamente fácil criar código paralelo para trabalhos de computação simples, como processamento de imagem e vídeo, disse Gwennapp. A Adobe reescreveu o Photoshop de uma maneira que pode atribuir tarefas como ampliação e filtragem de imagens a núcleos específicos de x86, melhorando o desempenho em três a quatro vezes.

"Se você está fazendo vídeo ou gráficos, pode usar conjuntos diferentes de pixels e atribuí-los a CPUs diferentes. Você pode obter um monte de paralelismo dessa forma ", disse ele. Mas, para tarefas mais complexas, é difícil encontrar uma única abordagem para identificar uma sequência de cálculos que possam ser paralelizados e, em seguida, dividi-los.

Enquanto o lado de programação pode apresentar o maior desafio, também há mudanças de hardware que precisam ser feitas, para superar problemas como latência de memória e velocidades de barramento lentas. "Como você adiciona mais e mais CPUs no chip, você precisa da largura de banda de memória para fazer backup", disse Gwennap.

Compartilhando um único cache de memória ou barramento de dados entre múltiplos núcleos pode criar um gargalo, significando que os núcleos extras ser largamente desperdiçado. "Quando você chega a seis ou oito CPUs, eles passam o tempo todo conversando entre si e não avançando para realizar qualquer trabalho", disse ele.

O ônus pode, em última instância, recair sobre os desenvolvedores para preencher a lacuna entre hardware e software para escrever melhores programas paralelos. Muitos programadores não estão preparados para os últimos desenvolvimentos em design de hardware, disse Gal-on. Eles devem abrir as folhas de dados e estudar as arquiteturas de chips para entender como seu código pode ter um melhor desempenho, disse ele.