TeraScale é o codinome de uma família de microarquiteturas de unidades de processamento gráfico desenvolvidas pela ATI Technologies / AMD e sua segunda microarquitetura implementando o modelo de shader unificado seguindo o Xenos. O TeraScale substituiu as antigas microarquiteturas de pipeline fixo e competiu diretamente com a primeira microarquitetura de shader unificada da Nvidia, chamada Tesla.
O TeraScale foi usado na Radeon HD 2000 fabricada em 80 nm e 65 nm, Radeon HD 3000 fabricada em 65 nm e 55 nm, Radeon HD 4000 fabricada em 55 nm e 40 nm, Radeon HD 5000 e Radeon HD 6000 fabricadas em 40 nm. O TeraScale também foi usado nas Unidades de Processamento Acelerado da AMD, codinomes "Brazos", "Llano", "Trinity" e "Richland". O TeraScale é encontrado até mesmo em algumas das marcas de placas de vídeo mais recentes.
TeraScale é uma arquitetura VLIW SIMD, enquanto Tesla é uma arquitetura RISC SIMD, semelhante ao sucessor do TeraScale, o Graphics Core Next. TeraScale implementa HyperZ.
Um gerador de código LLVM (ou seja, um back-end do compilador) está disponível para TeraScale, mas parece estar faltando na matriz do LLVM. Por exemplo, o Mesa 3D faz uso disso.
TeraScale 1 (VLIW5)
Na SIGGRAPH 08 em dezembro de 2008, o funcionário da AMD Mike Houston descreveu parte da microarquitetura TeraScale.
No FOSDEM09, Matthias Hopf, do parceiro de tecnologia da AMD, SUSE Linux, apresentou um slide sobre a programação do driver de código aberto para o R600.
Shaders unificados
Arquiteturas de GPU anteriores implementavam pipelines fixos, ou seja, havia processadores de shader distintos para cada tipo de shader. O TeraScale utiliza muitos processadores de shader flexíveis que podem ser programados para processar uma variedade de tipos de shader, aumentando significativamente o rendimento da GPU (dependendo da combinação de instruções do aplicativo, conforme observado abaixo). O núcleo R600 processa shaders de vértice, geometria e pixel conforme descrito pela especificação Direct3D 10.0 para Shader Model 4.0, além do suporte completo ao OpenGL 3.0.AMD OpenGL 3.0 driver release on Jan 28, 2009
A nova funcionalidade do shader unificado é baseada em uma arquitetura de Very Long Instruction Word (VLIW) na qual o núcleo executa operações em paralelo.Wasson, Scott. AMD Radeon HD 2900 XT graphics processor: R600 revealed, Tech Report, May 14, 2007
Um cluster de shader é organizado em 5 unidades de processamento de fluxo. Cada unidade de processamento de fluxo pode aposentar uma instrução MAD (ou ADD ou MUL) de ponto flutuante de precisão simples por clock, produto escalar (DP e caso especial pela combinação de ALUs) e ADD inteiro.Beyond3D review: AMD R600 Architecture and GPU Analysis, retrieved June 2, 2007. A 5ª unidade é mais complexa e pode lidar adicionalmente com funções transcendentais especiais, como seno e cosseno. Cada cluster de shader pode executar 6 instruções por ciclo de clock (pico), consistindo em 5 instruções de sombreamento mais 1 ramificação.
Notavelmente, a arquitetura VLIW traz consigo alguns desafios clássicos inerentes aos projetos VLIW, nomeadamente o de manter um fluxo de instruções óptimo. Além disso, o chip não pode emitir instruções em conjunto quando um depende dos resultados do outro. O desempenho da GPU depende muito da mistura de instruções usadas pelo aplicativo e de quão bem o compilador em tempo real no driver consegue organizar essas instruções.
O núcleo R600 inclui 64 clusters de shaders, enquanto os núcleos RV610 e RV630 têm 8 e 24 clusters de shaders, respectivamente.
Tesselação de hardware O TeraScale inclui várias unidades capazes de realizar tesselação. Elas são semelhantes às unidades programáveis da GPU Xenos usada no Xbox 360.
A tesselação foi oficialmente especificada nas principais APIs, começando com o DirectX 11 e o OpenGL 4. As GPUs baseadas em TeraScale 1 (séries HD 2000, 3000 e 4000) são compatíveis apenas com Direct3D 10 e OpenGL 3.3 e, portanto, implementam um princípio de mosaico diferente que usa extensões de API específicas do fornecedor. As GPUs baseadas em TeraScale 2 (começando com a série Radeon HD 5000) foram as primeiras a se conformar com a técnica de tesselação Direct3D 11 e OpenGL 4.0. Embora o tesselador TeraScale 1 tenha um design mais simples, ele é descrito pela AMD como um subconjunto do padrão de tesselação posterior.
As unidades de tesselação TeraScale permitem que os desenvolvedores peguem uma malha poligonal simples e a subdividam usando uma função de avaliação de superfície curva. Existem diferentes formas de tesselação, como superfícies de Bézier com N-patches, B-splines e NURBS, e também algumas técnicas de subdivisão da superfície, que geralmente incluem mapas de deslocamento de algum tipo de textura. Basicamente, isso permite que um modelo simples e de baixo polígono tenha sua densidade poligonal aumentada drasticamente em tempo real, com impacto muito pequeno no desempenho. Scott Wasson do Tech Report observou durante uma demonstração da AMD que o modelo resultante era tão denso com milhões de polígonos que parecia sólido.
O tessellator TeraScale lembra o ATI TruForm, a marca de uma das primeiras unidades de tesselação de hardware usada inicialmente no Radeon R200.
O ATI TruForm recebeu pouca atenção dos desenvolvedores de software. Alguns jogos (como Madden NFL 2004, Serious Sam, Unreal Tournament 2003 e 2004 e, não oficialmente, Morrowind ) tiveram suporte para a tecnologia de tesselação da ATI incluída. Uma adaptação tão lenta tem a ver com o fato de não ser um recurso compartilhado com as GPUs da NVIDIA, uma vez que estas implementaram uma solução de tesselação concorrente usando patches Quintic-RT que obtiveram ainda menos suporte dos principais desenvolvedores de jogos. Como a GPU do Xbox 360 é baseada na arquitetura da ATI, a Microsoft viu a tesselação de superfície acelerada por hardware como um recurso importante da GPU. Alguns anos depois, o recurso de tesselação tornou-se obrigatório com o lançamento do DirectX 11 em 2009.The Future of DirectX presentation, slide 24-29
Embora o princípio de tesselação introduzido com o TeraScale não fizesse parte dos requisitos do OpenGL 3.3 ou Direct3D 10.0, e concorrentes como a série GeForce 8 não tivessem hardware semelhante, a Microsoft adicionou o recurso de tesselação como parte de seus planos futuros para o DirectX 10.1.The Future of DirectX presentation, slide 24-29 Finalmente, a Microsoft introduziu a tesselação como uma capacidade necessária não com o DirectX 10.1, mas com o DirectX 11.
O processador geométrico GCN é a solução mais atual da AMD (que adquiriu o negócio de GPU da ATI) para realizar tesselação usando a GPU.
Processador de despacho ultra-threaded Embora o R600 seja um afastamento significativo dos designs anteriores, ele ainda compartilha muitos recursos com seu predecessor, o Radeon R520. O Ultra-Threaded Dispatch Processor é um importante componente arquitetônico do núcleo do R600, assim como nas GPUs Radeon X1000. Este processador gerencia um grande número de threads em voo de três tipos distintos (vértice, geometria e shaders de pixel) e alterna entre eles conforme necessário. Com um grande número de threads sendo gerenciados simultaneamente, é possível reorganizar a ordem dos threads para utilizar os shaders de forma otimizada. Em outras palavras, o processador de despacho avalia o que vai nas outras partes do R600 e tenta manter a eficiência do processamento a mais alta possível. Há também níveis mais baixos de gerenciamento; cada conjunto SIMD de 80 processadores de fluxo tem seu próprio sequenciador e árbitro. O árbitro decide qual thread processar em seguida, enquanto o sequenciador tenta reordenar as instruções para o melhor desempenho possível dentro de cada thread.
Texturização e anti-aliasing A texturização e a saída final a bordo do núcleo R600 são semelhantes, mas também diferentes do R580. O R600 é equipado com 4 unidades de textura que são desacopladas (independentes) do núcleo do shader, como nas GPUs R520 e R580. As unidades de saída de renderização (ROPs) da série Radeon HD 2000 agora executam a tarefa de anti-aliasing multiamostragem (MSAA) com grades de amostra programáveis e máximo de 8 pontos de amostra, em vez de usar shaders de pixel como na série Radeon X1000. Outra novidade é a capacidade de filtrar texturas FP16, populares com iluminação HDR, em velocidade máxima. O ROP também pode executar filtragem trilinear e anisotrópica em todos os formatos de textura. No R600, isso totaliza 16 pixels por clock para texturas FP16, enquanto texturas FP32 de maior precisão filtram na metade da velocidade (8 pixels por clock).
Os recursos de anti-aliasing são mais robustos na série R600 do que na série R520. Além da capacidade de executar 8× MSAA, em comparação com 6× MSAA no R300 até o R580, o R600 tem um novo modo de anti-aliasing de filtro personalizado (CFAA). CFAA refere-se a uma implementação de filtros não-caixa que observam os pixels ao redor do pixel específico que está sendo processado para calcular a cor final e o anti-aliasing da imagem. O CFAA é executado pelo shader, em vez de nos ROPs. Isso traz uma programabilidade muito melhorada porque os filtros podem ser personalizados, mas também pode trazer potenciais problemas de desempenho devido ao uso de recursos de shader. Desde o lançamento do R600, a CFAA utiliza filtros de tenda largos e estreitos. Com estes, amostras de fora do pixel que está sendo processado são ponderadas linearmente com base em sua distância do centroide desse pixel, com a função linear ajustada com base no filtro largo ou estreito escolhido.
Controladores de memória Os controladores de memória são conectados por meio de um barramento de anel bidirecional interno enrolado ao redor do processador. Na Radeon HD 2900, é um barramento em anel bidirecional de 1.024 bits (leitura de 512 bits e gravação de 512 bits), com 8 canais de memória de 64 bits para uma largura total de barramento de 512 bits na 2900 XT. Na Radeon HD 3800, é um barramento em anel de 512 bits; na Radeon HD 2600 e HD 3600, é um barramento em anel de 256 bits; na Radeon HD 2400 e HD 3400, não há barramento em anel.
Atualização de meia geração A série teve uma atualização de meia geração com redução do die (55 nm): variantes: RV670, RV635 e RV620. Todas as variantes oferecem suporte a PCI Express 2.0, DirectX 10.1 com recursos Shader Model 4.1, ATI Unified Video Decoder (UVD) dedicado para todos os modelos e tecnologia PowerPlay para placas de vídeo de desktop. MadboxPC coverage , retrieved November 10, 2007
Com exceção da série Radeon HD 3800, todas as variantes suportavam 2 saídas DisplayPort integradas, suportando monitores de 24 e 30 bits para resoluções de até 2.560×1.600. Cada saída incluía 1, 2 ou 4 pistas por saída, com taxa de dados de até 2,7 Gbit/s por faixa.
A ATI afirmou que o suporte ao DirectX 10.1 pode trazer melhor desempenho e eficiência de processamento com erro de arredondamento reduzido (0,5 ULP comparado com erro médio 1,0 ULP como erro tolerável), melhores detalhes e qualidade de imagem, iluminação global (uma técnica usada em filmes de animação e mais melhorias em sistemas de jogos de consumo, proporcionando assim uma experiência de jogo mais realista.ATI DirectX 10.1 whitepaper , retrieved December 7, 2007)
Placas de vídeo Série Radeon HD 2000 Série Radeon HD 3000 Série Radeon HD 4000
(veja a lista de chips nessas páginas)
TeraScale 2 (VLIW5)
O TeraScale 2 (VLIW5) foi introduzido com GPUs Radeon HD série 5000 na geração "Evergreen".
No HPG10, Mark Fowler apresentou o "Evergreen" e afirmou que, por exemplo, 5870 (Cypress), 5770 (Juniper) e 5670 (Redwood) suportam resolução máxima de 6 vezes 2560×1600 pixels, enquanto o 5470 (Cedar) suporta 4 vezes 2560×1600 pixels, importante para o suporte multimonitor AMD Eyefinity.