Sobre as tendências de desenvolvimento da arquitetura do processador, ou por que acredito no sucesso da Huawei no mercado de servidores

Nós vivemos em tempos interessantes. Parece-me que os próximos 2-3 anos determinarão para onde o desenvolvimento da arquitetura irá para a próxima década. Agora, no mercado de processadores para servidores, há vários players representando abordagens completamente diferentes da tecnologia. E isso é muito legal (acho até difícil dizer em qual sílaba a ênfase da última palavra se aplica :))
.
Mas, mesmo entre cinco e seis anos atrás, parecia que o tempo congelou e o desenvolvimento parou. Descanse em vários tipos de restrições (parede de força, parede de escalabilidade etc.). Eu falei um pouco sobre isso aqui. A lei de Moore foi posta em causa e teóricos particularmente fervorosos sugeriram a introdução de correções logarítmicas nela :) O domínio da Intel no mercado de processadores de servidor parecia inabalável na época. A AMD não mostrou concorrência séria, as GPGPUs da NVidia pareciam um produto puramente de nicho e as tentativas da ARM de entrar no mercado de servidores não tiveram êxito.

Tudo mudou com o desenvolvimento de segmentos como Machine Learning e Inteligência Artificial. As GPGPUs acabaram se adaptando muito melhor às operações de convolução e multiplicação de matrizes (especialmente com pouca precisão) do que as CPUs. Além disso, a NVidia conseguiu demonstrar um aumento no número de transistores, mesmo à frente da lei de Moore. Isso levou o mundo das arquiteturas de servidor a se tornar bipolar. Em uma extremidade está a CPU x86, um mecanismo de latência adaptado para ocultar latências fora de ordem da máquina. Sua vantagem inegável é o excelente desempenho em aplicativos de thread único (desempenho de thread único). A desvantagem é a enorme área e o número de transistores. No outro extremo do GPGPU está o mecanismo Throughput, um grande número de elementos de computação não complicados (EUs). Aqui, o oposto é verdadeiro - o tamanho de um elemento é pequeno,o que permite colocar um grande número deles em um chip. Por outro lado, o desempenho de aplicativos de thread único deixa muito a desejar ...

Infelizmente, as tentativas de combinar CPUs e GPUs de alta potência em um pacote não foram bem-sucedidas até agora. Pelo menos pela razão que tal chip consumirá e dissipará muita energia. Portanto, soluções discretas estão agora em tendência. Eu realmente não acredito neles por dois motivos. Em primeiro lugar, a arquitetura se torna mais complexa e outros gags aparecem na forma de um barramento conectando CPU e GPU e uma estrutura de memória heterogênea. A segunda dificuldade está parcialmente relacionada à primeira e consiste no fato de que essas soluções são muito mais difíceis de programar. Cada um dos modelos de programação de aceleradores existentes (CUDA da NVidia, DPC ++ da Intel, OpenCL ou OpenMP) possui suas próprias vantagens e desvantagens. Ao mesmo tempo, nenhum deles é universal nem dominante.

Parece-me que, do ponto de vista do desenvolvimento da arquitetura, a AMD deu o passo certo, que introduziu o processador Rome. Devido à compactação do núcleo (em comparação com a Intel), mais núcleos puderam ser colocados em um caso. No entanto, isso por si só não é suficiente - para que essa solução seja dimensionada no desempenho, é necessário cuidar da comunicação correta entre os kernels (uncore) e a qualidade dos tempos de execução paralelos. Os engenheiros da AMD conseguiram resolver os dois problemas e obter resultados muito competitivos em um dos benchmarks industriais mais importantes - o CPU SPEC. A solução da AMD está entre os pólos fornecidos pela Nvidia e Intel. Mas é muito mais próximo do último. Este ainda é o mesmo "grande núcleo". Parece que a média de ouro entre abordagens polares exige núcleos mais compactos.E das arquiteturas existentes, o ARM tem a melhor chance de ocupar esse nicho.
imagem
Então, por que o ARM é exatamente da Huawei? Eu encontrei esta resposta para mim: com um aumento no número de núcleos em um chip, a importância do desempenho de um núcleo diminui (mas até um certo limite), e a importância da comunicação entre os núcleos e com a memória aumenta. E a comunicação é a área em que a Huawei é líder mundial. É o design não essencial (e não apenas e nem o núcleo) que determinará o desempenho do sistema. E aqui, eu acho, temos boas chances.

No entanto, as arquiteturas ideais existem apenas no vácuo. Na realidade, é sempre necessário correlacionar-se com a quantidade e a estrutura do software existente no mercado de servidores. E foi escrito e otimizado para o X86 há anos. Levará muito tempo e esforço para torná-lo mais "amigável" à arquitetura do ARM. Um grande trabalho está à frente, tanto no campo de ferramentas de software (compiladores, bibliotecas, tempos de execução) quanto no campo de adaptação de aplicativos (engenharia de aplicativos). Mas acredito que o caminho será dominado pelo viajante.

All Articles