19 pontos por xguru 2020-12-21 | 8 comentários | Compartilhar no WhatsApp

"O M1 ajudará o RISC-V por ser o começo de uma mudança de paradigma, mas provavelmente não da forma que você imagina"

Texto de continuação do engenheiro que escreveu "Por que o chip M1 é tão rápido?". Ele projeta o futuro do RISC-V por uma perspectiva interessante.

Os fatores de desempenho do M1 são:

  1. Um grande número de decodificadores e execução fora de ordem (OoO)

  2. Vários chips dedicados, como GPU, NPU, DSP etc.

Este texto aprofunda o item 2, computação heterogênea.

Chips dedicados podem receber vários nomes, mas aqui todos serão chamados genericamente de coprocessadores (ou também aceleradores).

  • Coprocessadores não são uma tendência totalmente nova.

  • O Amiga 1000, lançado em 1985, também tinha coprocessadores para áudio e gráficos; a GPU também é um coprocessador,

e a TPU (Tensor Processing Unit) do Google também é um coprocessador otimizado para machine learning.

[ O que é um coprocessador ]

  • Diferentemente da CPU, ele não consegue existir sozinho. Não se faz um computador apenas colocando um coprocessador; ele é simplesmente um processador de propósito específico que executa bem certas tarefas.

  • Um exemplo inicial foi a 8087 Floating Point Unit (FPU) da Intel. A 8086 da Intel fazia bem cálculos inteiros, mas não era boa em operações de ponto flutuante.

  • Também é possível emular operações de ponto flutuante com cálculo inteiro, mas isso era lento. É parecido com os primeiros microprocessadores, que só conseguiam fazer soma/subtração e não multiplicação, então realizavam multiplicações repetindo várias somas.

  • Em outras palavras, "cálculos matemáticos complexos podem ser processados pela repetição de operações simples".

  • Todos os coprocessadores fazem essencialmente a mesma coisa. A CPU consegue fazer o que o coprocessador faz. Basta repetir operações simples.

  • O motivo de GPUs terem sido necessárias no início é que repetir o mesmo cálculo em milhões de polígonos/pixels exigia muito tempo da CPU.

[ Como os dados entram e saem de um coprocessador ]

  • Assim como mouse/teclado/tela, todos os coprocessadores, incluindo GPU/FPU/Neural Engine, acessam regiões específicas de memória para ler e gravar dados.

  • Essas tarefas são tratadas por device drivers, então desenvolvedores de software comuns normalmente não lidam com isso.

→ É aí que entram controladores DMA (Direct Memory Access) etc.

  • Na era do DOS, em C/C++, era possível alterar pixels acessando diretamente o endereço da memória de vídeo com ponteiros.

  • Coprocessadores funcionam desse jeito: NPU, GPU, T1 etc. têm cada um seus próprios endereços para comunicação, e é possível comunicar-se de forma assíncrona.

  • A CPU lista na memória todos os comandos que serão enviados ao Neural Engine ou à GPU e depois informa esse endereço ao Neural Engine/GPU.

  • Como a CPU não precisa esperar o coprocessador processar esses comandos e dados, interrupções passam a ser necessárias.

[ Como funcionam as interrupções ]

  • Placas gráficas/de rede são conectadas ao PC e possuem linhas de interrupção designadas.

  • Elas funcionam como linhas conectadas diretamente à CPU; quando ativadas, a CPU interrompe o que está fazendo e trata a interrupção.

  • Na prática, a posição atual e os registradores são salvos na memória para que a execução possa ser retomada depois.

  • Em seguida, ela procura na tabela de interrupções qual tarefa executar. A tabela contém o endereço do programa que deve rodar quando a interrupção é disparada.

  • Para o programador, isso não aparece diretamente; parece mais uma função de callback registrada para um evento específico. O driver de dispositivo faz esse trabalho em baixo nível.

  • O motivo dessa explicação é que, para usar coprocessadores, é preciso entender o que acontece de fato e o que está envolvido na comunicação real.

  • Com interrupções, muitas coisas acontecem em paralelo.

→ Enquanto a CPU é interrompida pelo mouse, o aplicativo pode buscar uma imagem pela placa de rede; quando o mouse se move, a CPU obtém as novas coordenadas e as envia à GPU para desenhar o cursor na nova posição. Enquanto a GPU desenha o cursor, a CPU começa a processar a imagem obtida da rede.

  • Usando essas interrupções, é possível enviar tarefas complexas de machine learning ao Neural Engine do M1 para identificar rostos na webcam. Como o Neural Engine processa os dados de imagem, o computador e a CPU podem continuar fazendo outras tarefas e respondendo ao usuário.

[ A ascensão do RISC-V ]

  • Em 2010, o laboratório de computação paralela da UC Berkeley passou a evoluir na direção de usar mais coprocessadores.

  • Eles viram o fim da Lei de Moore ao perceber que não era mais possível aumentar o desempenho facilmente apenas espremendo mais os núcleos de CPU de propósito geral.

→ Isso tornou necessário recorrer a hardware especializado, ou seja, coprocessadores.

  • A frequência de clock não pode ser aumentada facilmente por causa de calor, consumo de energia etc.

→ Um caminho é usar muitos decodificadores e execução fora de ordem (OoO).

→ Consulte o texto "Por que o chip M1 é tão rápido?" https://pt.news.hada.io/topic?id=3315

[ Devemos gastar o orçamento de transistores em núcleos de CPU ou em coprocessadores? ]

  • Aumentar para 128 núcleos não torna um sistema desktop mais eficiente.

  • No começo dos anos 80, se havia um orçamento de 20 mil transistores, bastava usar 15 mil deles para fazer a CPU.

  • Se a CPU executa 100 tarefas diferentes e forem necessários 1.000 transistores para construir um coprocessador para apenas uma dessas tarefas, então criar coprocessadores para todas elas exigiria 100 mil transistores, excedendo o orçamento.

[ A estratégia mudou à medida que o número de transistores aumentou ]

  • Nos projetos iniciais era preciso focar em computação de propósito geral, mas hoje entram tantos transistores que já nem se sabe bem o que fazer com todos eles.

  • Por isso, projetar coprocessadores virou uma tarefa importante. Há muita pesquisa sendo feita para criar vários novos coprocessadores.

  • Em muitos casos, essa pesquisa precisa começar do zero, partindo de aceleradores bastante básicos.

  • Diferentemente da CPU, eles não leem nem processam instruções de todas as etapas, então não sabem como acessar ou organizar memória, por exemplo.

  • Uma solução simples para isso é usar uma CPU simples como controladora.

  • Ou seja, os coprocessadores são compostos por circuitos aceleradores especializados controlados por uma CPU simples, configurados para acelerar tarefas específicas.

→ Por exemplo, chips como Neural Engine/Tensor Processing Unit podem manipular grandes registradores capazes de armazenar matrizes.

[ O RISC-V foi feito sob medida para controlar aceleradores ]

  • Esse foi o objetivo do design do RISC-V.

  • Ele possui um conjunto mínimo de 40 a 50 instruções para tarefas gerais de CPU.

→ CPUs x86 têm cerca de 1.500 instruções.

  • Em vez de um grande conjunto fixo de instruções, o RISC-V foi projetado em torno do conceito de extensões.

  • Como todos os coprocessadores são diferentes, o RISC-V pode ser configurado com um conjunto principal de instruções e conjuntos de extensão necessários para cada coprocessador.

É isso que este texto quer explicar.

  • O M1 da Apple fará toda a indústria caminhar para um futuro dominado por coprocessadores.

  • E, para construir esses coprocessadores, o "RISC-V será uma peça importante do quebra-cabeça".

[ Vantagens de criar coprocessadores com RISC-V ]

  • Criar chips é algo complexo e caro.

  • Desde construir ferramentas para validação do chip até executar programas de teste, fazer diagnósticos e várias outras coisas, é necessário muito esforço.

  • Essa é parte do valor de usar ARM hoje em dia. Há um grande ecossistema, então é possível validar e testar designs.

  • Por isso, ter seu próprio conjunto de instruções não é uma boa ideia.

  • No RISC-V há um padrão que permite a várias empresas criar ferramentas, e como existe um ecossistema, várias empresas podem compartilhar essa carga.

  • Por que não usar o ARM, que já existe? Porque o ARM foi feito como CPU de propósito geral e tem um grande conjunto fixo de instruções.

  • Por causa de pedidos de clientes e da competição com o RISC-V, a ARM também revelou, em 2019, um conjunto de instruções para extensões.

  • Mas o problema continua sendo o mesmo: ele não foi projetado para isso desde o começo.

→ Todo o toolchain do ARM pressupõe a implementação do grande conjunto de instruções do ARM.

→ Mas coprocessadores não querem nem precisam de um conjunto grande de instruções.

→ Coprocessadores querem um ecossistema de ferramentas construído sobre a ideia de um conjunto básico mínimo e fixo de instruções com extensibilidade.

  • Um bom insight sobre por que isso é vantajoso pode ser visto no uso de RISC-V pela Nvidia.

→ Grandes GPUs precisam de algum tipo de CPU de propósito geral para atuar como controladora.

→ A empresa criou e usou um chip chamado FALCON: FAst Logic CONtroller.

→ Baixo custo e alta eficiência.

  • Como o RISC-V tem um conjunto pequeno e simples de instruções, ele supera todos os concorrentes, incluindo o ARM.

  • Ao escolher o RISC-V, a Nvidia conseguiu viabilizar chips menores com consumo mínimo de energia.

  • Com o mecanismo de extensões, é possível adicionar apenas as instruções necessárias para cada tarefa.

[ O ARM se tornará o novo x86 ]

  • Ironicamente, poderemos ver um futuro em que Mac e PC sejam movidos a ARM.

  • Porém, o hardware customizado ao redor deles será ocupado por coprocessadores dominados por RISC-V.

  • À medida que os coprocessadores se popularizarem, haverá mais chips RISC-V do que ARM em um SoC.

  • O futuro não será ARM or RISC-V, mas ARM and RISC-V.

[ O ARM comandará um exército de coprocessadores RISC-V ]

  • O processador ARM de propósito geral ficará no centro junto com um exército de coprocessadores RISC-V encarregados de gráficos, criptografia, compressão de vídeo, machine learning e processamento de sinais.

  • O professor David Patterson, da UC Berkeley, e sua equipe viram esse futuro se aproximando e ajustaram o RISC-V para se encaixar bem nele.

  • Todo tipo de hardware especializado e microcontroladores está demonstrando grande interesse no RISC-V, e muitas áreas hoje dominadas pelo ARM passarão ao RISC-V.

[ Não daria para usar o RISC-V como CPU principal? ]

  • Muita gente se pergunta se não seria possível substituir totalmente o ARM por RISC-V.

  • Alguns dizem que o conjunto de instruções simples demais do RISC-V não conseguiria entregar o alto desempenho de ARM e x86.

  • Mas o RISC-V pode, sim, ser usado perfeitamente como processador principal, e desempenho não é o problema.

→ O que falta é alguém para construir um RISC-V de alto desempenho, como existe no ARM.

→ Em outras palavras, é possível, mas a questão é de momentum. MacOS e Windows já estão rodando em ARM.

→ No curto prazo, nem a Microsoft nem a Apple devem se esforçar para fazer outra transição de hardware

8 comentários

 
functor 2020-12-21

Interessante. Obrigado pelo bom resumo.

Agora vai chegar o dia em que até nas escolas as aulas de arquitetura serão dadas com base em ARM ou RISC-V, e não em x86 ou amd64..

 
kunggom 2020-12-21

Antigamente, já apareceu aqui um conteúdo em que um engenheiro vindo da ARM criticava a RISC-V.

https://pt.news.hada.io/topic?id=3137

Se for como o conteúdo acima diz, então o aumento da diversidade de chips que adotam RISC-V deve ser algo intencional.

 
jwstyle 2020-12-21

Está ficando cada vez mais interessante.

Fico curioso para ver como Intel e AMD vão responder.

 
cloverhearts 2020-12-21

Pelo que sei, a China está praticamente apostando tudo em RISC-V... realmente nem consigo imaginar como será o futuro.

 
xguru 2020-12-21

Também pensei na China. Se a Huawei, que continua sofrendo contenção dos EUA, assumisse a dianteira e tentasse fazer isso como CPU principal, o que será que aconteceria? rs

 
kbumsik 2020-12-21

Como a Huawei não pode usar nem a ARM nem a TSMC, dá para considerar que o desenvolvimento de CPUs de alto desempenho por si só já fracassou de qualquer forma. Talvez ainda reste algum espaço para os próprios equipamentos de rede da empresa, que exigem menos desempenho.

Mas, como muitas outras empresas estão usando RISC-V, parece que os resultados devem vir dessas empresas.

 
xguru 2020-12-22

Ah, eu não tinha pensado que a própria TSMC estava bloqueada. A menos que a SMIC vá além de 7 nm e consiga desenvolver um processo até 5 nm, parece bem difícil.

 
xguru 2020-12-21

Essa pessoa realmente escreve muito bem. Li este texto com bastante interesse também.

Havia muitas previsões de que o RISC-V poderia se tornar outra alternativa,

mas eu nunca tinha pensado sob a perspectiva de que, desse jeito, ele poderia se tornar o melhor chip para uso como coprocessador auxiliar.