Graphics Core Next![]() Graphics Core Next (GCN) é o codinome de uma série de microarquiteturas e uma arquitetura de conjunto de instruções que foram desenvolvidas pela AMD para suas GPUs como sucessoras de sua microarquitetura TeraScale. O primeiro produto com GCN foi lançado em 9 de janeiro de 2012.[1] GCN é uma microarquitetura SIMD de conjunto de instruções reduzido que contrasta com a arquitetura SIMD de Very Long Instruction Word do TeraScale.[2] O GCN requer consideravelmente mais transístores que o TeraScale, mas oferece vantagens para computação de GPU de uso geral (GPGPU) devido a um compilador mais simples. Os chips gráficos GCN foram fabricados com CMOS a 28 nm, e com FinFET em 14 nm (pela Samsung Electronics e GlobalFoundries) e 7 nm (pela TSMC), disponível em modelos selecionados nas séries de placas de vídeo Radeon HD 7000, HD 8000, 200, 300, 400, 500 e Vega da AMD, incluindo a Radeon VII lançada separadamente. O GCN também foi usado na parte gráfica das Unidades de Processamento Acelerado (APUs), incluindo aquelas no PlayStation 4 e no Xbox One. O GCN foi sucedido pela microarquitetura RDNA e pela arquitetura do conjunto de instruções em 2019. Conjunto de instruçõesO conjunto de instruções GCN é de propriedade da AMD e foi desenvolvido especificamente para GPUs. Não possui micro-operação para divisão. A documentação está disponível para:
Um backend do compilador LLVM está disponível para o conjunto de instruções GCN.[4] É usado pelo Mesa 3D. O GNU Compiler Collection 9 oferece suporte ao GCN 3 e ao GCN 5 desde 2019[5] para programas autônomos de thread única, com o GCC 10 também sendo descarregado via OpenMP e OpenACC.[6] MIAOW é uma implementação RTL de código aberto da microarquitetura AMD Southern Islands GPGPU. Em novembro de 2015, a AMD anunciou sua Iniciativa Boltzmann, que visa permitir a portabilidade de aplicativos baseados em CUDA para um modelo de programação C++ comum.[7] No evento Super Computing 15, a AMD exibiu um Heterogeneous Compute Compiler (HCC), um driver Linux headless e uma infraestrutura de tempo de execução HSA para computação de alto desempenho em classe de cluster, e uma ferramenta Heterogeneous-compute Interface for Portability (HIP) para portar aplicativos CUDA para o modelo C++ comum mencionado anteriormente. MicroarquiteturasEm julho de 2017, o conjunto de instruções do Graphics Core Next teve cinco iterações. As diferenças entre as quatro primeiras gerações são mínimas, mas a arquitetura GCN de quinta geração apresenta processadores de fluxo bastante modificados para melhorar o desempenho e suportar o processamento simultâneo de dois números de menor precisão no lugar de um único número de maior precisão.[8] Processamento de comando![]() Graphics Command ProcessorO Processador de Comando Gráfico (Graphics Command Processor, GCP) é uma unidade funcional da microarquitetura GCN. Entre outras tarefas, é responsável pelo manuseio de shaders assíncronos.[9] Asynchronous Compute EngineO Asynchronous Compute Engine (ACE) é um bloco funcional distinto que atende a propósitos de computação, cuja finalidade é semelhante à do Processador de Comando Gráfico. AgendadoresDesde a terceira iteração do GCN, o hardware contém dois agendadores: um para agendar "frentes de onda" durante a execução do shader (o CU Scheduler ou Compute Unit Scheduler) e o outro para agendar a execução de filas de desenho e computação. Este último ajuda no desempenho executando operações de computação quando as unidades de computação (CUs) são subutilizadas devido a comandos gráficos limitados pela velocidade do pipeline de função fixa ou largura de banda. Essa funcionalidade é conhecida como Async Compute. Para um determinado shader, os drivers da GPU também podem agendar instruções na CPU para minimizar a latência. Geometric processor![]() O processador de geometria (Geometric processor) contém um Montador de Geometria, um Tesselador e um Montador de Vértices. O Tesselator é capaz de fazer tesselação em hardware conforme definido pelo Direct3D 11 e OpenGL 4.5 (veja AMD 21 de janeiro de 2017),[10] e sucedeu o ATI TruForm e a tesselação de hardware no TeraScale como o então mais recente núcleo de propriedade intelectual de semicondutores da AMD. Compute unitsUma unidade de computação (Compute units, UC) combina 64 processadores de shader com 4 unidades de mapeamento de textura (TMUs).[11][12] As unidades de computação são separadas, mas alimentam, as unidades de saída de renderização (ROPs).[12] Cada unidade de computação consiste no seguinte:
Quatro unidades de computação são conectadas para compartilhar um cache de instruções L1 de 16 KiB e um cache de dados L1 de 32 KiB, ambos somente leitura. Um SIMD-VU opera em 16 elementos por vez (por ciclo), enquanto um SU pode operar em um por vez (um/ciclo). Além disso, o SU lida com algumas outras operações, como ramificação.[14] Cada SIMD-VU tem alguma memória privada onde armazena seus registradores. Existem dois tipos de registradores: registradores escalares (S0, S1, etc.), que contêm números de 4 bytes cada, e registradores vetoriais (V0, V1, etc.), que representam cada um um conjunto de 64 números de 4 bytes. Nos registradores vetoriais, cada operação é feita em paralelo nos 64 números. que correspondem a 64 entradas. Por exemplo, ele pode funcionar em 64 pixels diferentes ao mesmo tempo (para cada um deles as entradas são ligeiramente diferentes e, portanto, você obtém uma cor ligeiramente diferente no final). Cada SIMD-VU tem espaço para 512 registradores escalares e 256 registradores vetoriais. A AMD afirmou que cada unidade de computação GCN (CU) tem 64 KiB de compartilhamento de dados local (LDS).[15] CU schedulerO agendador CU (CU scheduler) é o bloco funcional de hardware, que escolhe quais frentes de onda o SIMD-VU executa. Ele escolhe um SIMD-VU por ciclo para agendamento. Não deve ser confundido com outros agendadores de hardware ou software. WavefrontUm shader é um pequeno programa escrito em GLSL que executa processamento gráfico, e um kernel é um pequeno programa escrito em OpenCL que executa processamento GPGPU. Esses processos não precisam de tantos registradores, mas precisam carregar dados da memória do sistema ou gráfica. Esta operação vem com latência significativa. A AMD e a Nvidia escolheram abordagens semelhantes para esconder essa latência inevitável: o agrupamento de vários threads. A AMD chama esse grupo de "wavefront", enquanto a Nvidia o chama de "warp". Um grupo de threads é a unidade mais básica de agendamento de GPUs que implementam essa abordagem para ocultar a latência. É o tamanho mínimo dos dados processados no modo SIMD, a menor unidade executável de código e a maneira de processar uma única instrução em todos os threads ao mesmo tempo. Em todas as GPUs GCN, uma "wavefront" consiste em 64 threads, e em todas as GPUs Nvidia, uma "warp" consiste em 32 threads. A solução da AMD é atribuir múltiplas frentes de onda a cada SIMD-VU. O hardware distribui os registradores para as diferentes frentes de onda e, quando uma frente de onda está esperando por algum resultado, que está na memória, o CU Scheduler atribui outra frente de onda ao SIMD-VU. As frentes de onda são atribuídas por SIMD-VU. SIMD-VUs não trocam frentes de onda. Um máximo de 10 frentes de onda podem ser atribuídas por SIMD-VU (portanto, 40 por CU). O AMD CodeXL mostra tabelas com a relação entre o número de SGPRs e VGPRs em relação ao número de frentes de onda, mas essencialmente, para SGPRS é entre 104 e 512 por número de frentes de onda, e para VGPRS é 256 por número de frentes de onda. Observe que, em conjunto com as instruções SSE, esse conceito do nível mais básico de paralelismo é frequentemente chamado de "largura de vetor". A largura do vetor é caracterizada pelo número total de bits nele contidos. SIMD Vector UnitCada Unidade Vetorial SIMD (SIMD Vector Unit) possui:
Cada SIMD-VU tem 10 buffers de instruções de wavefront e leva 4 ciclos para executar uma wavefront. Blocos de aceleração de áudio e vídeoMuitas implementações do GCN são normalmente acompanhadas por vários outros blocos ASIC da AMD. Incluindo, mas não se limitando ao Unified Video Decoder, Video Coding Engine e AMD TrueAudio. Video Coding EngineO Video Coding Engine é um ASIC de codificação de vídeo, introduzido pela primeira vez com a série Radeon HD 7000.[16] A versão inicial do VCE adicionou suporte para codificação de quadros I e P H.264 no formato de pixel YUV420, juntamente com codificação temporal SVE e modo de codificação de exibição, enquanto a segunda versão adicionou suporte de quadro B para quadros I YUV420 e YUV444. O VCE 3.0 fez parte da terceira geração do GCN, adicionando dimensionamento de vídeo de alta qualidade e o codec HEVC (H.265). O VCE 4.0 fazia parte da arquitetura Vega e foi posteriormente sucedido pelo Video Core Next. Unified virtual memoryEm uma prévia em 2011, AnandTech escreveu sobre a memória virtual unificada (Unified virtual memory), suportada pelo Graphics Core Next.[17]
Heterogeneous System Architecture (HSA)![]() Alguns dos recursos específicos do HSA implementados no hardware precisam de suporte do kernel do sistema operacional (seus subsistemas) e/ou de drivers de dispositivo específicos. Por exemplo, em julho de 2014, a AMD publicou um conjunto de 83 patches a serem incorporados ao kernel Linux mainline 3.17 para oferecer suporte às suas placas de vídeo Radeon baseadas no Graphics Core Next. O chamado driver de kernel HSA reside no diretório /drivers/gpu/hsa, enquanto os drivers de dispositivos gráficos DRM residem em /drivers/gpu/drm[20] e aumentar os drivers DRM já existentes para placas Radeon.[21] Esta primeira implementação se concentra em uma única APU "Kaveri" e funciona junto com o driver gráfico do kernel Radeon existente (kgd). Agendadores de hardwareOs agendadores de hardware são usados para executar o agendamento[22] e descarregar a atribuição de filas de computação aos ACEs do driver para o hardware, armazenando essas filas em buffer até que haja pelo menos uma fila vazia em pelo menos um ACE. Isso faz com que o HWS atribua imediatamente filas armazenadas em buffer aos ACEs até que todas as filas estejam cheias ou não haja mais filas para atribuir com segurança.[23] Parte do trabalho de agendamento realizado inclui filas priorizadas que permitem que tarefas críticas sejam executadas com prioridade mais alta do que outras tarefas sem exigir que as tarefas de prioridade mais baixa sejam preemptivas para executar a tarefa de alta prioridade, permitindo assim que as tarefas sejam executadas simultaneamente com as tarefas de alta prioridade agendadas para monopolizar a GPU o máximo possível, enquanto permite que outras tarefas usem os recursos que as tarefas de alta prioridade não estão usando.[22] Esses são essencialmente mecanismos de computação assíncronos que não possuem controladores de despacho.[22] Eles foram introduzidos pela primeira vez na microarquitetura GCN de quarta geração,[22] mas estavam presentes na microarquitetura GCN de terceira geração para fins de testes internos.[24] Uma atualização de driver habilitou os planejadores de hardware em peças GCN de terceira geração para uso em produção.[22] Acelerador de Descarte PrimitivoEsta unidade descarta triângulos degenerados antes de entrarem no shader de vértice e triângulos que não cobrem nenhum fragmento antes de entrarem no shader de fragmento.[25] Esta unidade foi introduzida com a microarquitetura GCN de quarta geração.[25] GeraçõesGraphics Core Next 1
A microarquitetura GCN 1 foi usada em várias placas de vídeo da série Radeon HD 7000. ![]()
Existem mecanismos de computação assíncronos que controlam a computação e o despacho.[14][29] ZeroCore PowerZeroCore Power é uma tecnologia de economia de energia em modo ocioso longo, desligando unidades funcionais da GPU quando não estão em uso.[30] A tecnologia AMD ZeroCore Power complementa o AMD PowerTune. ChipsGPUs discretas (família Southern Islands):
Graphics Core Next 2
![]() ![]() A segunda geração do GCN foi introduzida com a Radeon HD 7790 e também é encontrada nas Radeon HD 8770, R7 260/260X, R9 290/290X, R9 295X2, R7 360 e R9 390/390X, bem como nas APUs de desktop "Kaveri" baseadas em Steamroller e nas APUs móveis "Kaveri" baseadas em Puma e nas APUs "Beema" e "Mullins". Ele tem várias vantagens sobre o GCN original, incluindo suporte a FreeSync, AMD TrueAudio e uma versão revisada da tecnologia AMD PowerTune. A segunda geração do GCN introduziu uma entidade chamada "Shader Engine" (SE). Um Shader Engine compreende um processador de geometria, até 44 CUs (chip Hawaii), rasterizadores, ROPs e cache L1. Não fazem parte de um Shader Engine o Graphics Command Processor, os 8 ACEs, o cache L2 e os controladores de memória, bem como os aceleradores de áudio e vídeo, os controladores de vídeo, os 2 controladores DMA e a interface PCIe. O A10-7850K "Kaveri" contém 8 CUs (unidades de computação) e 8 mecanismos de computação assíncronos para agendamento independente e despacho de itens de trabalho.[31] No AMD Developer Summit (APU) em novembro de 2013, Michael Mantor apresentou a Radeon R9 290X. ChipsGPUs discretas (família Sea Islands):
integrados em APUs:
Graphics Core Next 3
![]() A 3ª geração do GCN[32] foi introduzida em 2014 com as Radeon R9 285 e R9 M295X, que possuem a GPU "Tonga". Ele apresenta desempenho de tesselação aprimorado, compressão de cor delta sem perdas para reduzir o uso de largura de banda da memória, um conjunto de instruções atualizado e mais eficiente, um novo escalonador de alta qualidade para vídeo, codificação HEVC (VCE 3.0) e decodificação HEVC (UVD 6.0) e um novo mecanismo de multimídia (codificador/decodificador de vídeo). A compressão de cores Delta é suportada no Mesa.[33] No entanto, seu desempenho de dupla precisão é pior em comparação à geração anterior.[34] ChipsGPUs discretas:
integrados em APUs: Graphics Core Next 4
![]() ![]() As GPUs da família Arctic Islands foram introduzidas no segundo trimestre de 2016 com a série AMD Radeon 400. O motor 3D (ou seja, GCA (Graphics and Compute array) ou GFX) é idêntico ao encontrado nos chips Tonga.[36] Mas o Polaris conta com um mecanismo de controle de exibição mais recente, UVD versão 6.3, etc. Todos os chips baseados em Polaris, exceto o Polaris 30, são produzidos no processo FinFET de 14 nm, desenvolvido pela Samsung Electronics e licenciado para a GlobalFoundries.[37] O Polaris 30, um pouco mais novo e atualizado, é construído no nó de processo LP FinFET de 12 nm, desenvolvido pela Samsung e pela GlobalFoundries. A arquitetura do conjunto de instruções GCN de quarta geração é compatível com a terceira geração. É uma otimização para processo de 14 nm FinFET permitindo velocidades de clock de GPU mais altas do que com a 3ª geração GCN.[38] As melhorias arquitetônicas incluem novos agendadores de hardware, um novo acelerador de descarte primitivo, um novo controlador de exibição e um UVD atualizado que pode decodificar HEVC em resoluções 4K a 60 quadros por segundo com 10 bits por canal de cor. ChipsGPUs discretas:[39]
Além das GPUs dedicadas, o Polaris é utilizado nas APUs do PlayStation 4 Pro e do Xbox One X, intituladas "Neo" e "Scorpio", respectivamente. Precision PerformanceO desempenho FP64 de todas as GPUs GCN de 4ª geração é 1/16 do desempenho FP32. Graphics Core Next 5
![]() A AMD começou a divulgar detalhes de sua próxima geração de arquitetura GCN, denominada 'Next-Generation Compute Unit', em janeiro de 2017.[38][43][44] Esperava-se que o novo design aumentasse o número de instruções por clock, maiores velocidades de clock, suporte para HBM2 e um maior espaço de endereço de memória. Os chipsets gráficos discretos também incluem "HBCC (High Bandwidth Cache Controller)", mas não quando integrados em APUs.[45] Além disso, esperava-se que os novos chips incluíssem melhorias nas unidades de saída de rasterização e renderização. Os processadores de fluxo foram bastante modificados em relação às gerações anteriores para oferecer suporte à tecnologia matemática compactada Rapid Pack Math para números de 8, 16 e 32 bits. Com isso, há uma vantagem significativa de desempenho quando uma precisão menor é aceitável (por exemplo: processar dois números de meia precisão na mesma taxa de um único número de precisão simples). A Nvidia introduziu a rasterização baseada em blocos e a binning com o Maxwell,[46] e esta foi uma grande razão para o aumento da eficiência do Maxwell. Em janeiro, AnandTech assumiu que a Vega finalmente alcançaria a Nvidia em relação às otimizações de eficiência energética devido ao novo "DSBR (Draw Stream Binning Rasterizer)" a ser introduzido com a Vega.[47] Ele também adicionou suporte para um novo estágio de shader – Primitive Shaders.[48][49] Os shaders primitivos fornecem processamento de geometria mais flexível e substituem os shaders de vértice e geometria em um pipeline de renderização. A partir de dezembro de 2018, os shaders primitivos não podem ser usados porque as alterações necessárias na API ainda não foram feitas.[50] Vega 10 e Vega 12 usam o processo 14 nm FinFET, desenvolvido pela Samsung Electronics e licenciado para a GlobalFoundries. Vega 20 usa o processo 7 nm FinFET desenvolvido pela TSMC. ChipsGPUs discretas:
integrados em APUs:
Precision performanceO desempenho de ponto flutuante de precisão dupla (FP64) de todas as GPUs GCN de 5ª geração, exceto a Vega 20, é um dezesseis avos do desempenho do FP32. Para Vega 20 com Radeon Instinct, isso é metade do desempenho do FP32. Para Vega 20 com Radeon VII, isso é um quarto do desempenho do FP32.[56] Todas as GPUs GCN de 5ª geração suportam cálculos de ponto flutuante de meia precisão (FP16), o que é o dobro do desempenho do FP32. Comparação de GPUs GCN
1 Nomes de código antigos como Treasure (Lexa) ou Hawaii Refresh (Ellesmere) não estão listados. 2 Data de lançamento inicial. As datas de lançamento de chips variantes como o Polaris 20 (abril de 2017) não estão listadas. Ver tambémReferências
Ligações externas |