Computação heterogênea - Heterogeneous computing

A computação heterogênea se refere a sistemas que usam mais de um tipo de processador ou núcleos . Esses sistemas ganham desempenho ou eficiência de energia não apenas adicionando o mesmo tipo de processadores, mas adicionando coprocessadores diferentes , geralmente incorporando recursos de processamento especializados para lidar com tarefas específicas.

Heterogeneidade

Normalmente, a heterogeneidade no contexto da computação se refere a diferentes arquiteturas de conjunto de instruções (ISA), onde o processador principal tem um e outros processadores têm outra - geralmente uma arquitetura muito diferente (talvez mais de uma), não apenas uma microarquitetura diferente ( flutuante o processamento do número do ponto é um caso especial disso - geralmente não referido como heterogêneo).

No passado, a computação heterogênea significava que diferentes ISAs tinham que ser tratados de forma diferente, enquanto em um exemplo moderno, os sistemas Heterogeneous System Architecture (HSA) eliminam a diferença (para o usuário) ao usar vários tipos de processadores (normalmente CPUs e GPUs ), geralmente no mesmo circuito integrado , para fornecer o melhor dos dois mundos: processamento geral da GPU (além dos conhecidos recursos de renderização de gráficos 3D da GPU, também pode realizar cálculos matematicamente intensos em conjuntos de dados muito grandes), enquanto as CPUs podem executar o sistema operacional e executar tarefas seriais tradicionais.

O nível de heterogeneidade nos sistemas de computação modernos está aumentando gradualmente à medida que o dimensionamento das tecnologias de fabricação permite que componentes antes discretos se tornem partes integradas de um sistema no chip , ou SoC. Por exemplo, muitos novos processadores agora incluem lógica integrada para interface com outros dispositivos ( SATA , PCI , Ethernet , USB , RFID , rádios , UARTs e controladores de memória ), bem como unidades funcionais programáveis ​​e aceleradores de hardware ( GPUs , criptografia coprocessadores, processadores de rede programáveis, codificadores / decodificadores A / V, etc.).

Descobertas recentes mostram que um multiprocessador de chip ISA heterogêneo que explora a diversidade oferecida por vários ISAs pode superar a melhor arquitetura homogênea do mesmo ISA em até 21% com 23% de economia de energia e uma redução de 32% no Produto de Atraso de Energia (EDP) . O anúncio da AMD em 2014 sobre seus SoCs ARM e x86 compatíveis com pinos, codinome Projeto Skybridge, sugeriu um multiprocessador de chip ISA heterogêneo (ARM + x86) em construção.

Topologia de CPU heterogênea

Um sistema com topologia de CPU heterogênea é um sistema em que o mesmo ISA é usado, mas os próprios núcleos têm velocidades diferentes. A configuração é mais semelhante a um multiprocessador simétrico . (Embora tais sistemas sejam multiprocessadores tecnicamente assimétricos , os núcleos não diferem em funções ou acesso ao dispositivo.) Normalmente, existem dois tipos de núcleos: um núcleo de maior desempenho, geralmente conhecido como "big" ou P-core e um núcleo mais eficiente em termos de energia geralmente conhecido como "pequeno" ou E-core.

Um uso comum dessa topologia é fornecer melhor eficiência de energia em SoCs móveis.

  • ARM big.LITTLE (sucedido por DynamIQ) é o caso prototípico, onde núcleos de alta potência mais rápidos são combinados com núcleos de baixa potência mais lentos.
  • A Apple produziu núcleos ARM de silício da Apple com organização semelhante.
  • A Intel também produziu núcleos híbridos x86-64 com o codinome Lakefield , embora não sem grandes limitações no suporte ao conjunto de instruções. O Alder Lake mais recente reduz o sacrifício, adicionando mais suporte de conjunto de instruções ao núcleo "pequeno".

Desafios

Os sistemas de computação heterogêneos apresentam novos desafios não encontrados em sistemas homogêneos típicos. A presença de vários elementos de processamento levanta todos os problemas envolvidos com sistemas de processamento paralelo homogêneo, enquanto o nível de heterogeneidade no sistema pode introduzir não uniformidade no desenvolvimento do sistema, práticas de programação e capacidade geral do sistema. As áreas de heterogeneidade podem incluir:

ISA ou arquitetura de conjunto de instruções
Os elementos de computação podem ter arquiteturas de conjunto de instruções diferentes, levando à incompatibilidade binária.
ABI ou interface binária do aplicativo
Os elementos de computação podem interpretar a memória de maneiras diferentes. Isso pode incluir endianness , convenção de chamada e layout de memória, e depende da arquitetura e do compilador sendo usados.
API ou interface de programação de aplicativo
Os serviços de biblioteca e sistema operacional podem não estar disponíveis de maneira uniforme para todos os elementos de computação.
Implementação de baixo nível de recursos de linguagem
Recursos de linguagem, como funções e threads, são frequentemente implementados usando ponteiros de função , um mecanismo que requer tradução ou abstração adicional quando usado em ambientes heterogêneos.
Interface de memória e hierarquia
Os elementos de computação podem ter diferentes estruturas de cache , protocolos de coerência de cache e o acesso à memória pode ser de acesso uniforme ou não uniforme à memória ( NUMA ). As diferenças também podem ser encontradas na capacidade de ler comprimentos de dados arbitrários, pois alguns processadores / unidades só podem realizar acessos de byte, palavra ou rajada.
Interconectar
Os elementos de computação podem ter diferentes tipos de interconexão além das interfaces básicas de memória / barramento. Isso pode incluir interfaces de rede dedicadas, dispositivos de acesso direto à memória ( DMA ), caixas de correio, FIFOs e memórias de rascunho , etc. Além disso, certas partes de um sistema heterogêneo podem ser coerentes com o cache, enquanto outras podem exigir o envolvimento de software explícito para manter a consistência e coerência.
atuação
Um sistema heterogêneo pode ter CPUs que são idênticas em termos de arquitetura, mas têm diferenças micro-arquitetônicas subjacentes que levam a vários níveis de desempenho e consumo de energia. Assimetrias em recursos combinados com modelos de programação opacos e abstrações de sistema operacional podem às vezes levar a problemas de previsibilidade de desempenho, especialmente com cargas de trabalho mistas.
Particionamento de Dados
Embora o particionamento de dados em plataformas homogêneas seja frequentemente trivial, foi demonstrado que, para o caso heterogêneo geral, o problema é NP-Completo. Para um pequeno número de partições, foi demonstrado que existem partições ideais que equilibram perfeitamente a carga e minimizam o volume de comunicação.

Hardware de exemplo

Hardware de computação heterogêneo pode ser encontrado em todos os domínios da computação - desde servidores de ponta e máquinas de computação de alto desempenho até dispositivos incorporados de baixo consumo de energia, incluindo telefones celulares e tablets.

Veja também

Referências