Nós realmente precisamos de tantos xPUs?

Atualização: 17 de novembro de 2021

"Nos últimos anos, anúncios sobre novas arquiteturas de processador têm sido feitos quase todos os dias, com um acrônimo de três letras - TPU, IPU, NPU. Mas o que realmente os distingue? Existem realmente tantas arquiteturas de processador exclusivas ou algo mais aconteceu?

"

Nos últimos anos, anúncios sobre novas arquiteturas de processador foram emitidos quase todos os dias, e um acrônimo de três letras - TPU, IPU, NPU foi fornecido. Mas o que realmente os distingue? Existem realmente tantas arquiteturas de processador exclusivas ou algo mais aconteceu?

Em 2018, John L. Hennessy e David A. Patterson deram uma palestra de Turing intitulada “A Nova Era de Ouro da Arquitetura de Computadores”. Eles estão preocupados com a CPU e seu desenvolvimento, mas esta é apenas uma pequena parte de toda a equação. O pesquisador e arquiteto de sistemas da Arteris IP Michael Frank disse: “Do ponto de vista da CPU, a maioria desses xPUs não são processadores reais”. “Eles são mais como uma GPU, um acelerador para cargas de trabalho especiais. E eles têm muita diversidade dentro. O aprendizado de máquina é um tipo de processador, você pode chamá-los de aceleradores de aprendizado de máquina coletivamente, mas eles aceleram a parte de processamento de uma variedade de. ”

A essência do processador pode ser resumida em três coisas. “Na análise final, ele retorna à arquitetura do conjunto de instruções (ISA)”, disse Manuel Uhm, diretor de marketing de chips da Xilinx. “Isso define o que você quer fazer. Então você tem E / S e memória, que suportam o ISA e as tarefas que ele está tentando realizar. Este será um momento muito interessante no futuro, porque veremos mais do que os últimos dois ou três anos. Tempo para mais inovação e mudança. ”

Muitas novas arquiteturas não são processadores únicos. “O que vemos é uma combinação de diferentes tipos de processadores ou motores programáveis ​​que existem no mesmo SoC ou no mesmo sistema”, disse Pierre-Xavier Thomas, Diretor do Grupo Cadence Equipar e Marketing Estratégico. “Distribua tarefas de software para diferentes hardwares ou mecanismos programáveis ​​flexíveis. Todos os processadores podem compartilhar uma API comum, mas o domínio de execução será diferente. Aqui você verá diferentes tipos de processamento com diferentes tipos de características.”

A realidade é que a maioria dos nomes é marketing.

“A questão é que as pessoas usam esses nomes e siglas para dois propósitos diferentes”, disse Simon Davidmann, CEO da Imperas Software. “Um é usado para explicar a arquitetura do processador, como o SIMD (Single Instruction Multiple Data). A outra define o segmento de aplicativo que está endereçando. Portanto, ele pode definir a arquitetura do processador ou algo como nomes de marca de uma unidade de processamento de tensor (TPU). Eles estão nomeando suas arquiteturas heterogêneas ou homogêneas, não processadores individuais. ”

Um pouco de história

Quarenta anos atrás, as coisas eram muito mais simples. Naquela época, havia uma unidade de processamento central (CPU) e havia muitas variantes dela, mas eram basicamente todos processadores completos de Turing com arquitetura de von Neumann. Cada um tem um conjunto de instruções diferente que os torna mais eficientes para certas tarefas, e há muita discussão sobre as vantagens relativas do conjunto de instruções complexas (CISC) e do conjunto de instruções reduzido (RISC).

O surgimento do RISC-V chamou muita atenção para o ISA. “As pessoas querem entender o ISA porque é o ISA que define o quão otimizado é o processador para tarefas definidas”, disse Uhm da Xilinx. “Eles podem olhar o ISA e iniciar o ciclo de cálculo. Se um ISA tiver instruções nativas e funcionar a 1 GHz, posso compará-lo com outro ISA do processador, que pode exigir duas instruções para a mesma função, mas o processador roda a 1.5 GHz. Qual delas me faz ir mais longe? Eles fazem cálculos matemáticos para funções importantes. ”

Existem vários métodos de empacotamento para CPUs. Às vezes, IO ou memória são colocados no mesmo pacote. Eles são chamados de unidades de microcontrolador (MCUs).

Quando os modems se tornaram populares, surgiram os processadores de sinais digitais (DSPs), e sua diferença era que eles usavam a arquitetura de Harvard. Isso separa o barramento de comando do barramento de dados. Alguns deles também implementaram arquitetura SIMD para tornar o processamento de dados mais eficiente.

A separação de instruções e dados visa melhorar o rendimento, embora limite algumas programações de ponta que podem ser feitas, como programas escritos pelo próprio. “Normalmente, as condições de contorno não são cálculos”, disse Uhm. “É cada vez mais I / O ou memória. A indústria está mudando de uma capacidade cada vez maior de computação para garantir que haja dados suficientes para manter a capacidade de computação e manter o desempenho ”.

Quando um único processador não fica mais rápido, eles conectam vários processadores. Esses processadores geralmente compartilham memória e mantêm o conceito de integridade de Turing para cada processador e todo o cluster de processadores. Não importa em qual núcleo qualquer parte do programa é executada, porque o resultado é o mesmo.

O próximo grande desenvolvimento é a unidade de processamento gráfico (GPU), que quebrou a convenção porque cada elemento de processamento ou pipeline tem sua própria memória e não pode ser endereçado fora do processador. Como a memória é limitada, isso significa que ele não pode executar nenhuma tarefa de processamento arbitrário, mas apenas tarefas que podem ser colocadas no espaço de memória fornecido.

“Para certos tipos de funções, as GPUs são processadores muito poderosos, mas seus pipelines são muito longos”, ressalta Uhm. “Esses pipelines permitem que a unidade de GPU processe dados continuamente, mas em algum ponto, se você tiver que atualizar o pipeline, será um grande golpe. Muita latência e incerteza são incorporadas ao sistema. ”

Embora muitos outros aceleradores tenham sido definidos, as GPUs - e posteriormente as GPUs de uso geral (GPGPUs) - definiram um paradigma de programação e uma pilha de software que os tornou mais fáceis de usar do que os aceleradores anteriores. “Por muitos anos, certos trabalhos foram especializados”, disse Davidmann da Imperas. “Existe uma CPU para programas sequenciais. Existe um processador gráfico, que se concentra no processamento de dados para o Peneira e nos leva a um mundo altamente paralelo. Usa muitos pequenos elementos de processamento para executar tarefas. Agora existem tarefas de aprendizado de máquina. ”

Que outras regras de construção podem explicar toda a nova arquitetura? No passado, os arrays de processadores eram geralmente conectados por memória ou topologias de rede fixas (como malha ou anel). O que surgiu recentemente é a combinação de Network on Chip (NoC), que permite que processadores heterogêneos distribuídos se comuniquem de forma mais flexível. No futuro, eles também podem se comunicar sem usar a memória.

“No momento, o NoC transporta apenas dados”, disse Frank da Arteris. “No futuro, o NoC pode ser estendido para outras áreas onde a comunicação entre aceleradores vai além dos dados. Ele pode enviar comandos, enviar notificações, etc. Os requisitos de comunicação do array do acelerador podem ser diferentes dos requisitos de comunicação da CPU ou SoC padrão. No entanto, a rede no chip não o restringirá a um subconjunto. Você pode otimizar e melhorar o desempenho apoiando as necessidades especiais de comunicação dos aceleradores. ”

Arquitetura de implementação

Uma forma de diferenciação do processador é otimizar para um ambiente operacional específico. Por exemplo, o software pode ser executado na nuvem, mas você também pode executar o mesmo software em um dispositivo micro IoT. A arquitetura de implementação será muito diferente e alcançará diferentes pontos de operação em termos de desempenho, consumo de energia, custo ou capacidade de operar sob condições extremas.

“Alguns aplicativos são para computação em nuvem e agora os estamos trazendo para mais perto do limite”, disse Thomas, da Cadence. “Isso pode ser devido aos requisitos de latência, ou energia ou dissipação de potência, que exigirá um tipo diferente de arquitetura. Você pode querer ter exatamente a mesma pilha de software para poder rodar em dois locais. A nuvem precisa fornecer flexibilidade porque receberá diferentes tipos de aplicativos e deve ser capaz de agregar um grande número de usuários. Isso requer que o hardware no servidor tenha recursos específicos do aplicativo, mas um tamanho não é adequado para todos ”.

O ML aumentou seus próprios requisitos. “Ao usar redes neurais e aprendizado de máquina para construir sistemas inteligentes, você precisa usar estruturas de software e pilhas de software gerais para programar a nova rede e mapeá-la para o hardware”, acrescentou Thomas. “Então, você pode adaptar o aplicativo de software ao hardware certo do ponto de vista do PPA. Isso leva à necessidade de diferentes tipos de processamento e processadores para atender a essas necessidades no nível de hardware ”.

Esses requisitos são definidos pelo aplicativo. “Uma empresa criou um processador para operações gráficas”, disse Frank. “Eles otimizam e aceleram como rastrear gráficos e realizar operações como reordenar gráficos. Existem outras forças brutas que aceleram o aprendizado de máquina, nomeadamente a multiplicação de matrizes. O acesso à memória é diferente para cada arquitetura. É um problema especial porque, quando você constrói um acelerador, o objetivo mais importante é mantê-lo ocupado. Você tem que transferir o máximo de dados possível para a ALU porque eles podem ser consumidos e produzidos. ”

Muitos desses aplicativos têm muito em comum. “Todos eles têm um pouco de memória local, uma rede em um chip para se comunicar e cada processador que executa um algoritmo de software está processando um pequeno pedaço de dados”, disse Davidmann. “Esses trabalhos são programados por sistemas operacionais executados em CPUs mais tradicionais.”

A parte complicada para designers de hardware é prever quais tarefas eles serão obrigados a realizar. “Embora você execute tipos semelhantes de operações em algumas camadas, as pessoas estão prestando atenção à diferenciação nas camadas”, disse Thomas. “Para poder processar uma rede neural, vários tipos de poder de processamento são necessários. Isso significa que você precisa ser capaz de processar uma parte da rede neural de alguma forma e, então, pode precisar de outro tipo de operação para processar outra camada. Movimentação de dados E a quantidade de dados também está mudando camada por camada. ”

Essa diferenciação pode ir além da movimentação de dados. “Para o sequenciamento do genoma, é necessário fazer algum processamento”, disse Frank. “Mas você não pode usar um único tipo de acelerador para acelerar tudo. Você tem que construir um conjunto completo de diferentes aceleradores para diferentes pipelines. A CPU passa a ser a guardiã do processo de execução do gerenciamento. Ele configura, executa o DMA e fornece a tomada de decisões entre os dois processos. Compreender e analisar algoritmos e definir como você deseja otimizar seu processamento é uma tarefa arquitetônica completa. ”

Parte do processo requer particionamento. “Não existe um único tipo de processador que pode ser otimizado para cada tarefa do processadorFPGA não é bom, CPU não é bom, GPU não é bom, DSP também é necessário ”, disse Uhm. “Criamos uma série de dispositivos que contêm tudo isso, mas a parte difícil do lado do cliente é que eles precisam fornecer inteligência para determinar quais partes do sistema geral serão direcionadas ao processador ou à lógica programável, ou à IA Motor. Todo mundo quer Aquela ferramenta mágica automática, uma ferramenta que pode decidir imediatamente colocá-la na CPU, colocá-la no FPGA e colocá-la na GPU. Essa ferramenta não existe hoje. ”

No entanto, a CPU sempre terá uma função. “A CPU é necessária para executar partes irregulares do programa”, disse Frank. “A programabilidade geral da CPU tem suas vantagens. Se você tiver estruturas de dados ou operações matemáticas especializadas, não funcionará bem. A CPU é um processador de uso geral e não é otimizado para nada. Não é bom em nada. . ”

Alterar “abstrato”

No passado, o limite de hardware / software era definido pelo ISA e a memória era continuamente endereçável. Quando há vários processadores, eles geralmente são alinhados à memória.

“Consistência é um contrato”, disse Frank. “Esse tipo de consistência é muito importante e não vai desaparecer. Mas você pode imaginar que, em um mecanismo de fluxo de dados, a consistência não é tão importante, porque você transfere os dados que se movem na borda diretamente de um acelerador para outro. Se você particionar o conjunto de dados, a consistência se tornará um obstáculo porque vai custar ciclos extras. Você deve verificar as informações. Você deve fornecer informações atualizadas. ”

Isso requer uma arquitetura de memória diferente. “Você tem que pensar sobre a estrutura da memória, porque você tem uma quantidade limitada de memória fortemente acoplada”, disse Uhm. “Você pode acessar a memória adjacente, mas rapidamente ficará sem memória adjacente e não poderá ser acessado a tempo. Isso deve ser entendido no design. Conforme a ferramenta amadurece, ela começa a aprender mais. Hoje, é feito pela inteligência humana, capaz de entender a arquitetura e aplicá-la. ”

Um nível mais alto de abstração também é necessário. “Algumas estruturas podem mapear ou compilar redes conhecidas para direcionar o hardware”, disse Thomas. “Você tem um conjunto de kernels de baixo nível ou APIs que serão usados ​​na pilha de software e, em seguida, serão usados ​​pelo mapeador da rede neural. Abaixo, você pode ter diferentes tipos de hardware, dependendo do que você deseja alcançar, dependendo dos detalhes do seu produto. Ele alcança a mesma funcionalidade, mas não usa o mesmo hardware ou as mesmas compensações PPA. ”

Isso coloca muita pressão sobre esses compiladores. “A principal questão é como você programa o acelerador no futuro?” Frank perguntou. “Você implementou um motor com fio como a primeira geração de GPUs? Ou você construiu um pequeno motor programável com seu próprio conjunto de instruções? Agora você tem que programar essas coisas separadamente e colocá-las em Cada uma delas está conectada ao fluxo de dados para realizar tarefas. Um processador possui um determinado subconjunto de todo o conjunto de instruções e o outro processador possui um subconjunto diferente, e todos eles compartilharão algumas partes sobrepostas do fluxo de controle. Você pode ter alguns produtos com recursos de aceleração ligeiramente diferentes. O compilador ou as bibliotecas que o compreenderem serão mapeados de acordo. ”

Resumir

A arquitetura do processador não mudou. Eles ainda seguem as mesmas escolhas que existiram nos últimos 40 anos. O que está mudando é a maneira como o chip é construído. Eles agora contêm um grande número de processadores heterogêneos com memória e comunicações otimizadas para um subconjunto de tarefas de aplicativo. Cada chip faz uma escolha diferente para a função do processador e seu propósito de otimização, a taxa de transferência de dados necessária e o fluxo de dados que normalmente vê.

Todo fornecedor de hardware deseja distinguir seu próprio chip de outros chips, mas é muito mais fácil promovê-lo por meio da marca do que falar sobre detalhes técnicos internos. Então, eles deram um nome a ele, chamaram-no de o primeiro, o mais rápido e o maior, e o vincularam a tipos específicos de problemas de aplicativo. Esses acrônimos de três letras tornaram-se nomes de tarefas do aplicativo, mas não definem a arquitetura de hardware.

Nos últimos anos, anúncios sobre novas arquiteturas de processador têm sido feitos quase todos os dias, com um acrônimo de três letras - TPU, IPU, NPU. Mas o que realmente os distingue? Existem realmente tantas arquiteturas de processador exclusivas ou algo mais aconteceu?

Em 2018, John L. Hennessy e David A. Patterson deram uma palestra de Turing intitulada “A Nova Era de Ouro da Arquitetura de Computadores”. Eles estão preocupados com a CPU e seu desenvolvimento, mas esta é apenas uma pequena parte de toda a equação. O pesquisador e arquiteto de sistemas da Arteris IP Michael Frank disse: “Do ponto de vista da CPU, a maioria desses xPUs não são processadores reais”. “Eles são mais como uma GPU, um acelerador para cargas de trabalho especiais. E eles têm muita diversidade dentro. O aprendizado de máquina é um tipo de processador, você pode chamá-los de aceleradores de aprendizado de máquina coletivamente, mas eles aceleram a parte de processamento de uma variedade de. ”

A essência do processador pode ser resumida em três coisas. “Na análise final, ele retorna à arquitetura do conjunto de instruções (ISA)”, disse Manuel Uhm, diretor de marketing de chips da Xilinx. “Isso define o que você quer fazer. Então você tem E / S e memória, que suportam o ISA e as tarefas que ele está tentando realizar. Este será um momento muito interessante no futuro, porque veremos mais do que os últimos dois ou três anos. Tempo para mais inovação e mudança. ”

Muitas novas arquiteturas não são processadores únicos. “O que vemos é uma combinação de diferentes tipos de processadores ou motores programáveis ​​que existem no mesmo SoC ou no mesmo sistema”, disse Pierre-Xavier Thomas, diretor do Grupo de Tecnologia e Marketing Estratégico da Cadence. “Distribuir tarefas de software para diferentes hardwares ou motores programáveis ​​flexíveis. Todos os processadores podem compartilhar uma API comum, mas o domínio de execução será diferente. Aqui, você realmente verá diferentes tipos de processamento com diferentes tipos de características. ”

A realidade é que a maioria dos nomes é marketing.

“A questão é que as pessoas usam esses nomes e siglas para dois propósitos diferentes”, disse Simon Davidmann, CEO da Imperas Software. “Um é usado para explicar a arquitetura do processador, como o SIMD (Single Instruction Multiple Data). A outra define o segmento de aplicativo que está endereçando. Portanto, ele pode definir a arquitetura do processador ou algo como nomes de marca de uma unidade de processamento de tensor (TPU). Eles estão nomeando suas arquiteturas heterogêneas ou homogêneas, não processadores individuais. ”

Um pouco de história

Quarenta anos atrás, as coisas eram muito mais simples. Naquela época, havia uma unidade de processamento central (CPU) e havia muitas variantes dela, mas eram basicamente todos processadores completos de Turing com arquitetura de von Neumann. Cada um tem um conjunto de instruções diferente que os torna mais eficientes para certas tarefas, e há muita discussão sobre as vantagens relativas do conjunto de instruções complexas (CISC) e do conjunto de instruções reduzido (RISC).

O surgimento do RISC-V chamou muita atenção para o ISA. “As pessoas querem entender o ISA porque é o ISA que define o quão otimizado é o processador para tarefas definidas”, disse Uhm da Xilinx. “Eles podem olhar o ISA e iniciar o ciclo de cálculo. Se um ISA tiver instruções nativas e funcionar a 1 GHz, posso compará-lo com outro ISA do processador, que pode exigir duas instruções para a mesma função, mas o processador roda a 1.5 GHz. Qual delas me faz ir mais longe? Eles fazem cálculos matemáticos para funções importantes. ”

Existem vários métodos de empacotamento para CPUs. Às vezes, IO ou memória são colocados no mesmo pacote. Eles são chamados de unidades de microcontrolador (MCUs).

Quando os modems se tornaram populares, surgiram os processadores de sinais digitais (DSPs), e sua diferença era que eles usavam a arquitetura de Harvard. Isso separa o barramento de comando do barramento de dados. Alguns deles também implementaram arquitetura SIMD para tornar o processamento de dados mais eficiente.

A separação de instruções e dados visa melhorar o rendimento, embora limite algumas programações de ponta que podem ser feitas, como programas escritos pelo próprio. “Normalmente, as condições de contorno não são cálculos”, disse Uhm. “É cada vez mais I / O ou memória. A indústria está mudando de uma capacidade cada vez maior de computação para garantir que haja dados suficientes para manter a capacidade de computação e manter o desempenho ”.

Quando um único processador não fica mais rápido, eles conectam vários processadores. Esses processadores geralmente compartilham memória e mantêm o conceito de integridade de Turing para cada processador e todo o cluster de processadores. Não importa em qual núcleo qualquer parte do programa é executada, porque o resultado é o mesmo.

O próximo grande desenvolvimento é a unidade de processamento gráfico (GPU), que quebrou a convenção porque cada elemento de processamento ou pipeline tem sua própria memória e não pode ser endereçado fora do processador. Como a memória é limitada, isso significa que ele não pode executar nenhuma tarefa de processamento arbitrário, mas apenas tarefas que podem ser colocadas no espaço de memória fornecido.

“Para certos tipos de funções, as GPUs são processadores muito poderosos, mas seus pipelines são muito longos”, ressalta Uhm. “Esses pipelines permitem que a unidade de GPU processe dados continuamente, mas em algum ponto, se você tiver que atualizar o pipeline, será um grande golpe. Muita latência e incerteza são incorporadas ao sistema. ”

Embora muitos outros aceleradores tenham sido definidos, as GPUs - e posteriormente as GPUs de uso geral (GPGPUs) - definiram um paradigma de programação e uma pilha de software que os tornou mais fáceis de usar do que os aceleradores anteriores. “Por muitos anos, certos trabalhos foram especializados”, disse Davidmann da Imperas. “Existe uma CPU para programas sequenciais. Existe um processador gráfico, que se concentra no processamento de dados para a tela e nos leva a um mundo altamente paralelo. Usa muitos pequenos elementos de processamento para executar tarefas. Agora existem tarefas de aprendizado de máquina. ”

Que outras regras de construção podem explicar toda a nova arquitetura? No passado, os arrays de processadores eram geralmente conectados por meio de topologias de rede fixas ou de memória (como malha ou anel). O que surgiu recentemente é a combinação de Network on Chip (NoC), que permite que processadores heterogêneos distribuídos se comuniquem de forma mais flexível. No futuro, eles também podem se comunicar sem usar a memória.

“No momento, o NoC transporta apenas dados”, disse Frank da Arteris. “No futuro, o NoC pode ser estendido para outras áreas onde a comunicação entre aceleradores vai além dos dados. Ele pode enviar comandos, enviar notificações, etc. Os requisitos de comunicação do array do acelerador podem ser diferentes dos requisitos de comunicação da CPU ou SoC padrão. No entanto, a rede no chip não o restringirá a um subconjunto. Você pode otimizar e melhorar o desempenho apoiando as necessidades especiais de comunicação dos aceleradores. ”

Arquitetura de implementação

Uma forma de diferenciação do processador é otimizar para um ambiente operacional específico. Por exemplo, o software pode ser executado na nuvem, mas você também pode executar o mesmo software em dispositivos micro IoT. A arquitetura de implementação será muito diferente e alcançará diferentes pontos de operação em termos de desempenho, consumo de energia, custo ou capacidade de operar sob condições extremas.

“Alguns aplicativos são para computação em nuvem e agora os estamos trazendo para mais perto do limite”, disse Thomas, da Cadence. “Isso pode ser devido aos requisitos de latência, ou energia ou dissipação de potência, que exigirá um tipo diferente de arquitetura. Você pode querer ter exatamente a mesma pilha de software para poder rodar em dois locais. A nuvem precisa fornecer flexibilidade porque receberá diferentes tipos de aplicativos e deve ser capaz de agregar um grande número de usuários. Isso requer que o hardware no servidor tenha recursos específicos do aplicativo, mas um tamanho não é adequado para todos ”.

O ML aumentou seus próprios requisitos. “Ao usar redes neurais e aprendizado de máquina para construir sistemas inteligentes, você precisa usar estruturas de software e pilhas de software gerais para programar a nova rede e mapeá-la para o hardware”, acrescentou Thomas. “Então, você pode adaptar o aplicativo de software ao hardware certo do ponto de vista do PPA. Isso leva à necessidade de diferentes tipos de processamento e processadores para atender a essas necessidades no nível de hardware ”.

Esses requisitos são definidos pelo aplicativo. “Uma empresa criou um processador para operações gráficas”, disse Frank. “Eles otimizam e aceleram como rastrear gráficos e realizar operações como reordenar gráficos. Existem outras forças brutas que aceleram o aprendizado de máquina, nomeadamente a multiplicação de matrizes. O acesso à memória é diferente para cada arquitetura. É um problema especial porque, quando você constrói um acelerador, o objetivo mais importante é mantê-lo ocupado. Você tem que transferir o máximo de dados possível para a ALU porque eles podem ser consumidos e produzidos. ”

Muitos desses aplicativos têm muito em comum. “Todos eles têm um pouco de memória local, uma rede em um chip para se comunicar e cada processador que executa um algoritmo de software está processando um pequeno pedaço de dados”, disse Davidmann. “Esses trabalhos são programados por sistemas operacionais executados em CPUs mais tradicionais.”

A parte complicada para designers de hardware é prever quais tarefas eles serão obrigados a realizar. “Embora você execute tipos semelhantes de operações em algumas camadas, as pessoas estão prestando atenção à diferenciação nas camadas”, disse Thomas. “Para poder processar uma rede neural, vários tipos de poder de processamento são necessários. Isso significa que você precisa ser capaz de processar uma parte da rede neural de alguma forma e, então, pode precisar de outro tipo de operação para processar outra camada. Movimentação de dados E a quantidade de dados também está mudando camada por camada. ”

Essa diferenciação pode ir além da movimentação de dados. “Para o sequenciamento do genoma, é necessário fazer algum processamento”, disse Frank. “Mas você não pode usar um único tipo de acelerador para acelerar tudo. Você tem que construir um conjunto completo de diferentes aceleradores para diferentes pipelines. A CPU passa a ser a guardiã do processo de execução do gerenciamento. Ele configura, executa o DMA e fornece a tomada de decisões entre os dois processos. Compreender e analisar algoritmos e definir como você deseja otimizar seu processamento é uma tarefa arquitetônica completa. ”

Parte do processo requer particionamento. “Não existe um único tipo de processador que pode ser otimizado para cada tarefa do processador - FPGA não é bom, CPU não é bom, GPU não é bom, DSP também é necessário”, disse Uhm. “Criamos uma série de dispositivos que contêm tudo isso, mas a parte difícil do lado do cliente é que eles precisam fornecer inteligência para determinar quais partes do sistema geral serão direcionadas ao processador ou à lógica programável, ou à IA Motor. Todo mundo quer Aquela ferramenta mágica automática, uma ferramenta que pode decidir imediatamente colocá-la na CPU, colocá-la no FPGA e colocá-la na GPU. Essa ferramenta não existe hoje. ”

No entanto, a CPU sempre terá uma função. “A CPU é necessária para executar partes irregulares do programa”, disse Frank. “A programabilidade geral da CPU tem suas vantagens. Se você tiver estruturas de dados ou operações matemáticas especializadas, não funcionará bem. A CPU é um processador de uso geral e não é otimizado para nada. Não é bom em nada. ”

Alterar “abstrato”

No passado, o limite de hardware / software era definido pelo ISA e a memória era continuamente endereçável. Quando há vários processadores, eles geralmente são alinhados à memória.

“Consistência é um contrato”, disse Frank. “Esse tipo de consistência é muito importante e não vai desaparecer. Mas você pode imaginar que, em um mecanismo de fluxo de dados, a consistência não é tão importante, porque você transfere os dados que se movem na borda diretamente de um acelerador para outro. Se você particionar o conjunto de dados, a consistência se tornará um obstáculo porque vai custar ciclos extras. Você deve verificar as informações. Você deve fornecer informações atualizadas. ”

Isso requer uma arquitetura de memória diferente. “Você tem que pensar sobre a estrutura da memória, porque você tem uma quantidade limitada de memória fortemente acoplada”, disse Uhm. “Você pode acessar a memória adjacente, mas rapidamente ficará sem memória adjacente e não poderá ser acessado a tempo. Isso deve ser entendido no design. Conforme a ferramenta amadurece, ela começa a aprender mais. Hoje, é feito pela inteligência humana, capaz de entender a arquitetura e aplicá-la. ”

Um nível mais alto de abstração também é necessário. “Algumas estruturas podem mapear ou compilar redes conhecidas para direcionar o hardware”, disse Thomas. “Você tem um conjunto de kernels de baixo nível ou APIs que serão usados ​​na pilha de software e, em seguida, serão usados ​​pelo mapeador da rede neural. Abaixo, você pode ter diferentes tipos de hardware, dependendo do que você deseja alcançar, dependendo dos detalhes do seu produto. Ele alcança a mesma funcionalidade, mas não usa o mesmo hardware ou as mesmas compensações PPA. ”

Isso coloca muita pressão sobre esses compiladores. “A principal questão é como você programa o acelerador no futuro?” Frank perguntou. “Você implementou um motor com fio como a primeira geração de GPUs? Ou você construiu um pequeno motor programável com seu próprio conjunto de instruções? Agora você tem que programar essas coisas separadamente e colocá-las em Cada uma delas está conectada ao fluxo de dados para realizar tarefas. Um processador possui um determinado subconjunto de todo o conjunto de instruções e o outro processador possui um subconjunto diferente, e todos eles compartilharão algumas partes sobrepostas do fluxo de controle. Você pode ter alguns produtos com recursos de aceleração ligeiramente diferentes. O compilador ou as bibliotecas que o compreenderem serão mapeados de acordo. ”

Resumir

A arquitetura do processador não mudou. Eles ainda seguem as mesmas escolhas que existiram nos últimos 40 anos. O que está mudando é a maneira como o chip é construído. Eles agora contêm um grande número de processadores heterogêneos com memória e comunicações otimizadas para um subconjunto de tarefas de aplicativo. Cada chip faz uma escolha diferente para a função do processador e seu propósito de otimização, a taxa de transferência de dados necessária e o fluxo de dados que normalmente vê.

Todo fornecedor de hardware deseja distinguir seu próprio chip de outros chips, mas é muito mais fácil promovê-lo por meio da marca do que falar sobre detalhes técnicos internos. Então, eles deram um nome a ele, chamaram-no de o primeiro, o mais rápido e o maior, e o vincularam a tipos específicos de problemas de aplicativo. Esses acrônimos de três letras tornaram-se nomes de tarefas do aplicativo, mas não definem a arquitetura de hardware.