Acelerador vs coprocessador em SoC ou APU: diferenças e semelhanças

Hoje, qualquer processador é um amálgama complexo de diferentes tipos de núcleos que lidam com a maior parte do trabalho, executam tarefas especializadas ou colaboram entre si para obter o melhor resultado possível ao executar os diferentes processos. Em qualquer caso, existem diferenças entre o que é um acelerador e um coprocessador como núcleos de suporte. Continue lendo para entender o que são.

Acelerador vs coprocessador em SoC ou APU

É muito claro que um CPU não pode fazer o trabalho sozinho, existem operações comuns que um computador carrega continuamente nas quais um processador de uso geral não é eficiente, mas antes de tudo devemos entender o que isso significa e por que são necessárias. chips de suporte.

Ao projetar uma nova arquitetura, há uma série de parâmetros que marcam os limites que os engenheiros não devem ultrapassar, incluindo coisas como o tipo de biblioteca usada para o projeto, quanto o chip consumirá, o que será? seu tamanho, mas principalmente quais problemas comuns ele está tentando resolver com o novo processador. É neste ponto que não apenas as unidades principais são definidas, mas também os coprocessadores e aceleradores que farão parte dela.

Os primeiros processadores de suporte que são colocados em uma arquitetura são fáceis de elucidar, geralmente aqueles que foram projetados para arquiteturas anteriores da mesma marca ou, na sua falta, aqueles que foram licenciados para terceiros. Estas últimas, por outro lado, nascem durante o desenvolvimento, a pedido dos clientes ou devido ao tipo de problema a resolver que exige um novo tipo de unidade de hardware.

O que é um coprocessador?

Coprocessador x87

Embora o significante seja autoexplicativo, é importante ter em mente que se temos vários núcleos trabalhando juntos para resolver o mesmo problema comum às partes distribuídas, então estamos falando de cada uma das unidades de processo atuando em coprocessamento com outras. . E sim, sabemos o que passou pela sua cabeça, mas quando temos vários núcleos de uma CPU tratando de um problema específico, estamos falando que aqueles que não executam o processo principal estão agindo como coprocessadores de outros.

Chips de suporte são tradicionalmente chamados de coprocessadores, embora o coprocessador mais famoso na história do PC seja o coprocessador matemático, que nada mais era do que o que mais tarde se tornaria a unidade de ponto flutuante ou FPU totalmente desacoplada da CPU principal. Assim, o coprocessador geralmente carece de um processo para capturar instruções da memória, mas precisa de outro processador para enviar as instruções e os dados a serem processados. O trabalho do coprocessador? Resolva essa parte do programa e retorne o resultado o mais rápido possível ao processador host.

Durante o tempo que o coprocessador está encarregado de fazer seu trabalho, o kernel principal pode usar a potência que ganhou para realizar outras tarefas, mas como um processo está sendo executado junto, chegar-se-á a um ponto em que não será mais possível para continuar até que o coprocessador ou coprocessadores concluam a tarefa designada a eles.

O que é um acelerador?

Hardware Acelerador

Tecnicamente, um acelerador é um coprocessador, mas com maior independência do que estes, pois não são responsáveis ​​pela execução de um processo como um todo, mas sim um processo inteiro que a CPU ignora completamente exceto para obter o resultado final ou para saber que a tarefa foi concluída.

Como um acelerador é completamente desacoplado do processador, ele é totalmente assíncrono. O que isso significa? O fato de um acelerador em oposição a um coprocessador não funcionar em combinação com a CPU principal do sistema. Isso permite que você acelere sua parte do código, o que significa concluí-lo em uma velocidade muito maior e, portanto, em menos tempo. Claro, isso requer grandes mudanças na arquitetura.

Em primeiro lugar, um coprocessador pode compartilhar partes da unidade de controle e até mesmo registrar ou acessar uma memória comum com a CPU. Quando todos esses elementos são compartilhados, eles podem criar congestionamento no acesso a eles, fazendo com que uma unidade ou outra pare de esperar para usar esses recursos. Como você vai entender, isso não pode acontecer em um acelerador, então seus dados e instruções apesar de serem fornecidos pelo processador são projetados para estarem disponíveis 100% do tempo, por isso muitos aceleradores são processadores completos que possuem seus próprios RAM interior.

Se um acelerador é melhor, por que um coprocessador é usado?

Portada Alternativa Processador

Já o dissemos na introdução deste artigo, tudo tem a ver com o orçamento que os arquitectos têm para implementar a solução de um problema e uma coisa que normalmente não é tida em conta são as infra-estruturas de comunicação entre os diferentes elementos, bem como as unidades que fazem parte do ciclo de instrução de cada processador, mas que não são responsáveis ​​por processar números em alta velocidade.

A nível de marketing, é muito fácil vender a potência de um processador em números, estes são facilmente compreendidos por pessoas que podem fazer uma comparação ordinal ou cardinal a partir desses dados. A realidade é que hoje em dia as infraestruturas em qualquer processador são as que ocupam mais espaço e por isso a decisão de implementar algo em forma de coprocessador ou acelerador é apenas tomada devido a estas limitações.

Um exemplo são os núcleos tensores e NVIDIAda unidade NVDLA da GPU unidade de sombreador, no caso da segunda, é o próprio processador. Não surpreendentemente, a sigla DLA significa Deep Learning Accelerator.