Como a arquitetura NVIDIA evoluiu de Tesla para Turing

Muita coisa mudou em termos de arquitetura of NVIDIA GPUs nas últimas duas décadas, mas um ponto de virada importante foi quando aqueles em verde lançaram a arquitetura Tesla, em 2006. Neste artigo, vamos dar uma olhada Voltar para ver como a arquitetura NVIDIA evoluiu de Tesla para Turing , a arquitetura atual (na ausência da chegada de Ampere) e, mais especificamente, como SM (Stream Multiprocessors) fizeram isso.

Neste artigo, revisaremos como a arquitetura da NVIDIA evoluiu de Tesla para Turing; portanto, é um bom momento para entrar em segundo plano e ver o que havia de particular em cada uma dessas arquiteturas, que você pode encontrar resumido na tabela a seguir. .

Como a arquitetura NVIDIA evoluiu de Tesla para Turing

Ano Arquitetura série morrem Processo litográfico Gráfico mais representativo
2006 Tesla GeForce 8 G80 90nm 8800 GTX
2010 Fermi GeForce 400 GF100 40nm GTX 480
2012 Kepler GeForce 600 GK104 28 nm GTX 680
2014 Maxwell GeForce 900 GM204 28 nm 980 GTX Ti
2016 Pascal GeForce 10 GP102 16nm 1080 GTX Ti
2018 Turing GeForce 20 TU102 12nm RTX 2080 Ti

O impasse: a era pré-NVIDIA Tesla

Até a chegada da Tesla em 2006, a NVIDIA GPU o design foi correlacionado aos estados lógicos de sua API de renderização. o GeForce GTX 7900 , alimentado pela matriz G71, foi fabricado em três seções (uma dedicada ao processamento de vértices (8 unidades), outra para gerar fragmentos (24 unidades) e outra para unir-se a elas (16 unidades).

Placa NVIDIA G71

Essa correlação forçou os designers e engenheiros a imaginarem a localização dos gargalos para equilibrar cada camada adequadamente. Adicionado a isso foi a chegada de DirectX 10 com sombreamento de geometria, os engenheiros da NVIDIA se encontraram entre uma rocha e um lugar difícil para equilibrar o dado sem saber quando e de que maneira o próximo estágio das APIs gráficas.

Estava na hora de mudar o maneira como você projeta sua arquitetura .

Arquitetura NVIDIA Tesla

A NVIDIA resolveu o problema de aumentar a complexidade com sua arquitetura Tesla, a primeira “unificada” em 2006. Com sua morrer G80 houve não há mais distinção entre camadas. Multiprocessadores de fluxo (SM) substituiu todas as unidades anteriores, graças à capacidade de executar processamento de vértice, geração de shard e junção de shard sem distinção em um único kernel. Assim, além disso, a carga é balanceada automaticamente trocando os “núcleos” executados por cada SM, dependendo das necessidades de cada momento.

Portanto, as Unidades Shader agora são os "núcleos" (não mais compatíveis com SIMD) que são capazes de manipular uma instrução inteira ou float32 sozinhos (os SMs recebem threads em grupos de 32 chamados warps). Idealmente, todos os encadeamentos em um warp executam a mesma instrução ao mesmo tempo apenas com dados diferentes (daí o nome SIMT). A unidade de instruções multiencadeada (MT) é responsável por ativar e desativar os encadeamentos em cada warp, no caso de os ponteiros de instruções (IP) convergirem ou diferirem.

SM de uma GPU Tesla

Dois SFU as unidades (você pode vê-las no diagrama acima) são responsáveis ​​por ajudar nos cálculos matemáticos complexos, como raízes quadradas inversas, senos, cossenos, exp e rcp. Essas unidades também são capazes de executar uma instrução para cada ciclo de clock, mas como existem apenas duas, a velocidade de execução é dividida por quatro para cada uma delas (ou seja, existe um SFU para cada quatro núcleos). Não há suporte de hardware para cálculos float64, e estes são feitos por software, reduzindo significativamente o desempenho.

Um SM trabalha em seu potencial máximo quando a latência da memória pode ser eliminada sempre com distorções programáveis ​​na fila de execução, mas também quando o encadeamento de uma distorção não possui divergências (é para isso que serve o fluxo de controle, que as mantém sempre na mesma caminho das instruções). O arquivo de log ( 4 KB RF ) é onde os estados do encadeamento são armazenados e os encadeamentos que consomem muita fila de execução reduzem quantos deles podem ser mantidos nesse log, reduzindo também o desempenho.

O dado “principal” dessa arquitetura da NVIDIA Tesla foi o G90, baseado em um processo litográfico de 90 nanômetros, apresentado com a famosa GeForce 8800 GTX. Duas SMs são agrupadas em um cluster de processador de textura (TPC), juntamente com uma unidade de textura e um cache Tex L1. Com 8 TPCs, o G80 possuía 128 núcleos, gerando 345.6 GFLOPs de potência bruta. A GeForce 8800 GTX era imensamente popular naqueles dias.

Morre G80 NVIDIA Tesla

Com a arquitetura Tesla, a NVIDIA também introduziu a linguagem de programação CUDA (Compute Unified Devide Architecture) em C, um superconjunto do C99, que foi um alívio bem-vindo para os entusiastas da GPGPU que receberam uma alternativa para enganar a GPU com shaders e texturas GLSL.

CPU x GPU Tesla

Embora esta seção se concentrasse amplamente nas SMs, elas eram apenas metade do sistema. As SMs precisam ser alimentadas com instruções e dados que residem na memória gráfica da GPU; portanto, para evitar estagnação, as GPUs não evitam "disparos" de memória com muita memória cache, como os processadores (CPUs), mas confundem a memória. barramento para solicitações de E / S dos milhares de threads que gerencia. Para isso, o alto desempenho da memória foi implementado no chip G80 por meio de seis canais de memória DRAM bidirecional.

Arquitetura Fermi

Tesla foi uma jogada muito arriscada, mas que acabou sendo muito boa e teve tanto sucesso que se tornou a base das arquiteturas da NVIDIA pelas próximas duas décadas. Em 2010, a NVIDIA lançou o GF100 morrer com base no novo Fermi arquitetura, com vários novos recursos internos.

O modelo de execução ainda gira em torno de deformações de 32 fios programadas em um SM, e isso ocorreu apenas graças à sua Litografia de 40 nm (vs. 90nm de Tesla) que a NVIDIA quadruplicou praticamente tudo. Agora, um SM pode programar duas distorções de mídia (16 threads) simultaneamente, graças a dois conjuntos de 16 núcleos CUDA. Com cada núcleo executando uma instrução por ciclo de clock, um único SM foi capaz de executar uma instrução de distorção por ciclo (e isso é 4 vezes a capacidade dos Tesla SMs).

SM de uma GPU Fermi

A contagem do SFU também foi reforçada, embora menos porque "apenas" multiplicou por dois, com quatro unidades no total. Também foi adicionado suporte de hardware para cálculos float64, que Tesla não possuía, realizados por dois núcleos combinados CUDA. O GF100 poderia fazer a multiplicação de números inteiros em um único ciclo de clock, graças a uma ALU de 32 bits (vs. 24 bits em Tesla) e possui maior precisão de float32.

Do ponto de vista da programação, o sistema de memória unificada da Fermi permitiu que o CUDA C fosse aprimorado com recursos do C ++, como objetos e métodos virtuais.

Matriz GF100 NVIDIA Fermi

Com as unidades de textura agora parte das SMs, o conceito de TPC desapareceu, substituído por GPCs (Graphics Process Clusters) que apresentam quatro SMs. Por último, mas não menos importante, um mecanismo "Polymorph" foi adicionado para lidar com vértices de objetos, visualizar transformação e mosaico. O carro-chefe dos gráficos desta geração foi o GTX 480, que com seus 512 núcleos possuía 1,345 GFLOPs de potência bruta.

Arquitetura NVIDIA Kepler

Em 2012, surgiu a arquitetura NVIDIA Kepler, com a qual a eficiência energética de sua matriz foi drasticamente aprimorada, diminuindo a velocidade do relógio e unificando o relógio central com o da placa (eles costumavam ter uma frequência de duas vezes), resolvendo o problema de Geração anterior GTX 480 (eles ficaram muito quentes e tiveram um consumo muito alto).

Essas mudanças deveriam ter resultado em desempenho inferior, mas, graças à implementação do processo litográfico de 28 nm e à eliminação do programador de hardware em favor de um programa de software, a NVIDIA conseguiu não apenas adicionar mais SM, mas também melhorar seu design. .

SMX NVIDIA Kepler

O "multiprocessador de streaming de última geração", conhecido como SMX, acabou sendo um monstro onde quase tudo havia dobrado ou até triplicado. Com quatro programadores de warp capazes de processar um warp inteiro em um ciclo de clock (comparado ao design de duas metades da Fermi), o SMX agora contém 196 núcleos. Cada programador possui um despacho duplo para executar uma segunda instrução em um warp se for independente da instrução atualmente executada, embora essa programação dupla nem sempre tenha sido possível.

Essa abordagem tornou a lógica de programação mais complicada, mas com até seis instruções de distorção por relógio, um SMX Kepler fornece o dobro do desempenho de um Fermi SM.

Morre GK104 NVIDIA Kepler

Os principais gráficos desta geração foram a GeForce GTX 680 com suas matrizes GK104 e 8 SMX, que continham a incrível quantidade de 1536 núcleos e forneciam um total de até 3,250 GFLOPs de potência bruta.

Arquitetura NVIDIA Maxwell

Em 2014 surgiu a arquitetura NVIDIA Maxwell, suas GPUs de 10ª geração. Como eles explicaram em sua documentação técnica, o coração dessas GPUs era "extrema eficiência energética e desempenho excepcional por watt consumido", e é isso que a NVIDIA orientou essa geração para sistemas de energia limitados, como mini PCs e laptops.

A principal decisão foi abandonar a abordagem de Kepler ao SMX e retornar à filosofia de Fermi de trabalhar com a mídia deformada. Assim, pela primeira vez em sua história, o SMM apresenta menos núcleos que seu antecessor, com "apenas" 128 núcleos. Ajustar o número de núcleos ao tamanho da urdidura melhorou a estrutura da matriz, o que resultou em uma grande economia de espaço ocupado e consumo de energia.

SMM NVIDIA Maxwell

A segunda geração do Maxwell melhorou significativamente o desempenho, mantendo a eficiência energética da primeira geração. Com o processo litográfico ainda estagnado em 28 nm, os engenheiros da NVIDIA não puderam confiar na miniaturização de transistores para melhorar o desempenho, mas menos núcleos por SMM reduziram seu tamanho, permitindo que se encaixassem em mais SMMs. no mesmo dia. O Maxwell Gen 2 contém o dobro do SMM que o Kepler, com apenas 25% a mais de área em sua matriz.

Na lista de aprimoramentos, também devemos mencionar uma lógica de agendamento mais simplificada que reduziu o recálculo redundante das decisões de agendamento, o que reduziu a latência da computação para proporcionar uma melhor ocupação de distorções. O relógio da memória também aumentou em 15%, em média.

Chip GM200 NVIDIA Maxwell

O diagrama do chip GM200 que vemos acima está quase começando a machucar os olhos, certo? É a matriz que incorporou a GTX 980 Ti, com 3072 núcleos em 24 SMM e que forneceu uma potência bruta de 6,060 GLOPs.

Arquitetura NVIDIA Pascal

Em 2016, chegou a próxima geração, NVIDIA Pascal, e a documentação técnica parecia quase uma cópia em carbono das SMMs de Maxwell. Mas o fato de não haver alterações nos SMs não significa que não houve melhorias e, de fato, o processo de 16nm usado nesses chips melhorou substancialmente o desempenho ao poder colocar mais SMs no mesmo chip.

Outras melhorias importantes a destacar foram o sistema de memória GDDR5X, uma novidade que forneceu velocidades de transferência de até 10 Gbps graças a oito controladores de memória, com sua interface de 256 bits fornecendo 43% mais largura de banda do que a geração anterior.

Matriz GP104 NVIDIA Pascal

O carro-chefe dos gráficos da geração Pascal foi o GTX 1080 Ti, com seu chip GP102 que você pode ver na imagem acima e seus 28 SM, embalando um total de 3584 núcleos para uma potência bruta de 11,340 GLOPs (já estamos em 11.3 TFLOPs )

Arquitetura NVIDIA Turing

Lançada em 2018, a Turing Architecture foi o “maior salto arquitetônico em mais de uma década” (nas palavras da NVIDIA). Não foram apenas adicionados SM Turing, mas o hardware dedicado Ray Tracing foi introduzido pela primeira vez, com os núcleos Tensor e RayTracing. Esse design pressupõe que o dado foi "fragmentado" novamente, no estilo de camadas da era pré-Tesla que falamos sobre você no início.

SM NVIDIA Turing

Além dos novos kernels, Turing adicionou três recursos principais: Primeiro, o kernel CUDA agora é escalável e capaz de executar instruções inteiras e de ponto flutuante em paralelo (isso lembrará muitos do "revolucionário" Intel Arquitetura Pentium lá atrás. o ano de 1996). Em segundo lugar, o novo sistema de memória GDDR6 apoiado por 16 controladores, que agora podem chegar a 14 Gbps, e finalmente os threads que não compartilham mais ponteiros de instrução em warps.

Graças à programação de encadeamentos independentes introduzida em Volta (que não incluímos aqui por ser uma arquitetura não focada no usuário), cada encadeamento tem seu próprio IP e, como resultado, as SMs são livres para programar encadeamentos em um warp sem a necessidade de esperar que eles convergam o mais rápido possível.

SM Turing

Os gráficos topo de gama desta geração são os RTX 2080 Ti, com sua matriz TU102 e 68 TSM contendo 4352 núcleos, com uma potência bruta de 13.45 TFLOPs. Não colocamos o diagrama de blocos completo como nos anteriores, porque para caber na tela, teria que ser reduzido tanto que seria um borrão.

E o que vem depois?

Como você bem sabe, a próxima arquitetura da NVIDIA se chama Ampere e certamente chegará com o nó de fabricação a 7 nm do TSMC. Atualizaremos este artigo assim que todos os dados estiverem disponíveis.