Núcleos grandes e pequenos em uma CPU heterogênea: diferenças e desempenho

Núcleos grandes e pequenos em uma CPU heterogênea

Até agora a norma em CPUs de PC e APUs tem sido um design homogêneo em CPUs, o que significa o uso de um único tipo de núcleo repetido um certo número de vezes. Mas o uso de configurações heterogêneas com núcleos de diferentes complexidades começou a aparecer no PC. Explicamos o que os núcleos Big e Little diferem em tais APUs e CPUs para PC

A chegada de CPUs e APUs em PCs que fazem uso de núcleos heterogêneos e, portanto, núcleos de diferentes complexidades e tamanhos é um fato. Mas como esses núcleos heterogêneos diferem em natureza e desempenho? Essa é a pergunta que muitos se perguntam ao ler sobre as diferentes arquiteturas que estão surgindo no mercado. Por que depois de mais de uma década usando um único tipo de núcleo deu-se o salto para o uso de núcleos grandes e pequenos nas CPUs.

Por que usar diferentes tipos de núcleos?

ConceptArt MultiCPU

São várias as razões para isso, a mais conhecida é aquela que tem sido usada no já clássico big.LITTLE de CPUs para smartphones, onde duas coleções de núcleos de diferentes potências e consumos são alternadas em uso de acordo com o tipo de aplicações de acordo com para a carga de trabalho no smartphone em todos os momentos. Isso foi feito para aumentar a vida útil da bateria de tais dispositivos.

Hoje esse conceito evoluiu e já é possível usar os dois tipos de núcleos simultaneamente e não de forma comutada. Portanto, o design combinado não se baseia mais na economia de energia, mas em obter o melhor desempenho possível. É aqui que entramos em duas maneiras diferentes de entender o desempenho, dependendo de como os núcleos heterogêneos são usados.

O mais utilizado deles, por ser o mais fácil de implementar, consiste em atribuir os threads mais leves em termos de carga de trabalho aos núcleos de menor potência, tarefa que o sistema operacional deve realizar. Que é o software responsável por gerenciar o uso de recursos de hardware, incluindo o GPU. Esta forma de trabalhar é a mesma que o Intel Lakefield e suas futuras arquiteturas, como Alder Lake, bem como a ARM núcleos com DynamiQ.

Seja o que for, a organização é baseada no uso de dois núcleos com o mesmo conjunto de registros e instruções, mas com especificações diferentes. Quais são as diferenças entre os diferentes núcleos heterogêneos? Vamos ver.

Grandes núcleos vs. pequenos núcleos hoje

Núcleos híbridos de Lakefield

Em primeiro lugar, vamos entrar no óbvio, a primeira diferença entre os dois tipos de núcleos está no tamanho. Como os núcleos grandes são mais complexos do que os núcleos pequenos, eles têm uma estrutura mais complexa e, portanto, compostos por um número maior de transistores. Ergo são maiores do que pequenos núcleos que têm uma estrutura muito mais simples. Isso significa que, dentro do espaço do chip, podemos incluir mais pequenos núcleos no espaço do chip do que grandes núcleos.

Para tudo isso, a primeira coisa que você se perguntará é: qual é a vantagem de desempenho ao aplicar os dois tipos de núcleos? Temos que ter em mente que no PC hoje, em nossos PCs, vários aplicativos estão rodando ao mesmo tempo, cada um executando vários threads de execução. O que o fato de adicionar um número maior de núcleos, mesmo que seja baseado em fazê-lo com núcleos mais leves em potência, acaba somando ao desempenho total.

Na realidade, os núcleos menores são apenas mais uma forma de tornar mais leve o trabalho dos núcleos maiores e mais complexos, eliminando o trabalho a fazer. Não só isso, mas também núcleos adicionais podem ser usados ​​para gerenciar as interrupções mais comuns dos diferentes periféricos, de forma que os demais núcleos não tenham que parar seu funcionamento a qualquer momento para atendê-los continuamente e em todos os momentos. .

As arquiteturas do futuro passam por configurações heterogêneas

Núcleos Pequeno Grande

O outro método é mais complexo para implementar kernels grandes e pequenos difere do anterior, pois consiste em dividir o conjunto de registradores e instruções do ISA e repeti-lo em duas classes de núcleos. O motivo é que nem todas as instruções têm o mesmo consumo de energia, mas as mais simples sempre consumirão mais nos núcleos mais complexos. Portanto, a ideia não é distribuir os threads de execução ao kernel correspondente, mas sim que a execução de um único thread de execução seja compartilhada entre dois ou mais núcleos de maneira intercalada.

Portanto, sua implementação é muito mais complexa que o modelo atual, já que os diferentes núcleos encarregados da mesma thread de execução devem ter o hardware necessário para se coordenar ao executar o código dos programas. A vantagem deste paradigma é que, em princípio, ele não requer o trabalho do sistema operacional para gerenciar os diferentes threads que o CPU tem que executar. Mas, neste caso, como já comentamos, a divisão dos tipos de kernel heterogêneos depende de como o conjunto de instruções é distribuído entre os dois kernels.

Lei Amdahl

A operação desse método tem a ver com a chamada Lei de Amdahl e com a forma como os programas se dimensionam em termos de desempenho. Por um lado temos partes sequenciais que não podem ser distribuídas entre vários núcleos porque não podem ser executadas em paralelo e por outras partes que sim. No primeiro caso a potência não vai depender do número de núcleos, mas sim da potência de cada núcleo, enquanto no segundo vai depender de cada núcleo.

Tradicionalmente, as instruções mais complexas em uma CPU são implementadas a partir de uma sequência de instruções mais simples para aproveitar melhor o hardware. Mas os novos nós de fabricação permitirão que instruções mais complexas sejam conectadas diretamente aos núcleos mais complexos, em vez de serem um composto de vários núcleos. Isso também servirá para aumentar o desempenho geral dos programas, pois ao executar essas instruções, elas levarão muito menos ciclos de clock para serem executados.