TeraScale es el nombre en código de una familia de microarquitecturas de unidades de procesamiento gráfico desarrolladas por ATI Technologies / AMD y su segunda microarquitectura que implementa el modelo de sombreado unificado después de Xenos . TeraScale reemplazó las antiguas microarquitecturas de canalización fija y compitió directamente con la primera microarquitectura de sombreado unificada de Nvidia llamada Tesla . [1] [2]
TeraScale se utilizó en las tarjetas gráficas Radeon HD 2000 fabricadas en 80 nm y 65 nm , Radeon HD 3000 fabricadas en 65 nm y 55 nm, Radeon HD 4000 fabricadas en 55 nm y 40 nm, Radeon HD 5000 y Radeon HD 6000 fabricadas en 40 nm. TeraScale también se utilizó en las unidades de procesamiento acelerado de AMD con nombres en código "Brazos", "Llano", "Trinity" y "Richland". TeraScale incluso se encuentra en algunas de las marcas de tarjetas gráficas posteriores.
TeraScale es una arquitectura SIMD VLIW , mientras que Tesla es una arquitectura SIMD RISC , similar al sucesor de TeraScale, Graphics Core Next . TeraScale implementa HyperZ . [3]
Hay un generador de código LLVM (es decir, un back-end de compilación) disponible para TeraScale, [4] pero parece faltar en la matriz de LLVM. [5] Por ejemplo, Mesa 3D lo utiliza.
En SIGGRAPH 08, en diciembre de 2008, el empleado de AMD Mike Houston describió parte de la microarquitectura de TeraScale. [6]
En FOSDEM09, Matthias Hopf del socio tecnológico de AMD, SUSE Linux, presentó una diapositiva sobre la programación del controlador de código abierto para el R600. [7]
Las arquitecturas de GPU anteriores implementaron pipelines fijos, es decir, había procesadores de sombreado distintos para cada tipo de sombreador . TeraScale aprovecha muchos procesadores de sombreador flexibles que se pueden programar para procesar una variedad de tipos de sombreadores, lo que aumenta significativamente el rendimiento de la GPU (dependiendo de la combinación de instrucciones de la aplicación, como se indica a continuación). El núcleo R600 procesa sombreadores de vértices, geometría y píxeles como se describe en la especificación Direct3D 10.0 para Shader Model 4.0, además de compatibilidad total con OpenGL 3.0. [8]
La nueva funcionalidad del sombreador unificado se basa en una arquitectura de palabras de instrucción muy largas (VLIW) en la que el núcleo ejecuta operaciones en paralelo. [9]
Un grupo de sombreadores se organiza en 5 unidades de procesamiento de flujo. Cada unidad de procesamiento de flujo puede retirar una instrucción MAD (o ADD o MUL) de punto flotante de precisión simple terminada por ciclo de reloj, producto escalar (DP y casos especiales mediante la combinación de ALU) y ADD de enteros. [10] La quinta unidad es más compleja y puede manejar además funciones trascendentales especiales como seno y coseno . [10] Cada grupo de sombreadores puede ejecutar 6 instrucciones por ciclo de reloj (pico), que consisten en 5 instrucciones de sombreado más 1 rama. [10]
Cabe destacar que la arquitectura VLIW trae consigo algunos desafíos clásicos inherentes a los diseños VLIW, a saber, el de mantener un flujo de instrucciones óptimo. [9] Además, el chip no puede emitir instrucciones de manera conjunta cuando una depende de los resultados de la otra. El rendimiento de la GPU depende en gran medida de la combinación de instrucciones que utiliza la aplicación y de lo bien que el compilador en tiempo real del controlador puede organizar dichas instrucciones. [10]
El núcleo R600 incluye 64 grupos de sombreadores, mientras que los núcleos RV610 y RV630 tienen 8 y 24 grupos de sombreadores respectivamente.
TeraScale incluye varias unidades capaces de realizar teselación . Son similares a las unidades programables de la GPU Xenos que se utiliza en la Xbox 360.
La teselación se especificó oficialmente en las principales API a partir de DirectX 11 y OpenGL 4. Las GPU basadas en TeraScale 1 (series HD 2000, 3000 y 4000) solo son compatibles con Direct3D 10 y OpenGL 3.3 e implementan, por lo tanto, un principio de teselación diferente que utiliza extensiones de API específicas del proveedor. [11] Las GPU basadas en TeraScale 2 (comenzando con la serie Radeon HD 5000 ) fueron las primeras en cumplir con la técnica de teselación de Direct3D 11 y OpenGL 4.0. [12] Aunque el teselador TeraScale 1 tiene un diseño más simple, AMD lo describe como un subconjunto del estándar de teselación posterior. [13]
Las unidades teseladoras TeraScale permiten a los desarrolladores tomar una malla poligonal simple y subdividirla utilizando una función de evaluación de superficie curva. Existen diferentes formas de teselación, como superficies Bézier con N-patches , B-splines y NURBS , y también algunas técnicas de subdivisión de la superficie, que generalmente incluyen un mapa de desplazamiento o algún tipo de textura. [14] Básicamente, esto permite que un modelo simple de pocos polígonos se incremente drásticamente en densidad de polígonos en tiempo real con un impacto muy pequeño en el rendimiento. Scott Wasson de Tech Report señaló durante una demostración de AMD que el modelo resultante era tan denso con millones de polígonos que parecía sólido. [9]
El teselado TeraScale recuerda a ATI TruForm , la marca de una de las primeras unidades de teselado de hardware utilizadas inicialmente en la Radeon 8500. [ 15]
ATI TruForm recibió poca atención de los desarrolladores de software. Algunos juegos (como Madden NFL 2004 , Serious Sam , Unreal Tournament 2003 y 2004 , y extraoficialmente Morrowind ) tenían soporte para la tecnología de teselación de ATI incluida. Una adaptación tan lenta tiene que ver con el hecho de que no era una característica compartida con las GPU NVIDIA, ya que estas habían implementado una solución de teselación competitiva utilizando parches Quintic-RT que habían logrado incluso menos soporte de los principales desarrolladores de juegos. [16] Dado que la GPU de Xbox 360 se basa en la arquitectura de ATI, Microsoft vio la teselación de superficies acelerada por hardware como una característica principal de la GPU. Un par de años después, la característica de teselación se volvió obligatoria con el lanzamiento de DirectX 11 en 2009. [14] [17]
Si bien el principio de teselación introducido con TeraScale no era parte de los requisitos de OpenGL 3.3 o Direct3D 10.0, y los competidores como la serie GeForce 8 carecían de hardware similar, Microsoft agregó la función de teselación como parte de sus planes futuros para DirectX 10.1. [17] Finalmente, Microsoft introdujo la teselación como una capacidad requerida no con DirectX 10.1 sino con DirectX 11. [18]
El procesador geométrico GCN es la solución más actual de AMD (que adquirió el negocio de GPU de ATI) para realizar teselación mediante la GPU.
Aunque el R600 es un cambio significativo con respecto a los diseños anteriores, aún comparte muchas características con su predecesor, el Radeon R520 . [9] El procesador de despacho de subprocesos ultrarrápidos es un componente arquitectónico importante del núcleo del R600, al igual que lo fue con las GPU Radeon X1000. Este procesador administra una gran cantidad de subprocesos en curso de tres tipos distintos (sombreadores de vértices, geometría y píxeles) y cambia entre ellos según sea necesario. [9] Con una gran cantidad de subprocesos que se administran simultáneamente, es posible reorganizar el orden de los subprocesos para utilizar los sombreadores de manera óptima. En otras palabras, el procesador de despacho evalúa lo que sucede en las otras partes del R600 e intenta mantener la eficiencia de procesamiento lo más alta posible. También hay niveles inferiores de administración; cada matriz SIMD de 80 procesadores de flujo tiene su propio secuenciador y árbitro. El árbitro decide qué subproceso procesar a continuación, mientras que el secuenciador intenta reordenar las instrucciones para obtener el mejor rendimiento posible dentro de cada subproceso. [9]
La textura y la salida final a bordo del núcleo R600 son similares pero también distintas a las del R580. El R600 está equipado con 4 unidades de textura que están desacopladas (independientes) del núcleo de sombreado, como en las GPU R520 y R580. [9] Las unidades de salida de renderizado (ROP) de la serie Radeon HD 2000 ahora realizan la tarea de anti-aliasing multimuestra (MSAA) con cuadrículas de muestra programables y un máximo de 8 puntos de muestra, en lugar de usar sombreadores de píxeles como en la serie Radeon X1000 . Otra novedad es la capacidad de filtrar texturas FP16, populares con iluminación HDR , a toda velocidad. ROP también puede realizar filtrado trilineal y anisotrópico en todos los formatos de textura. En el R600, esto suma un total de 16 píxeles por reloj para texturas FP16, mientras que las texturas FP32 de mayor precisión filtran a la mitad de la velocidad (8 píxeles por reloj). [9]
Las capacidades de anti-aliasing son más robustas en R600 que en la serie R520. Además de la capacidad de realizar 8× MSAA, en comparación con 6× MSAA en el R300 hasta el R580, R600 tiene un nuevo modo de anti-aliasing de filtro personalizado (CFAA). CFAA se refiere a una implementación de filtros no box que observan los píxeles alrededor del píxel particular que se está procesando para calcular el color final y anti-aliasing de la imagen. [10] CFAA se realiza mediante sombreador, en lugar de en los ROP. Esto brinda una programabilidad enormemente mejorada porque los filtros se pueden personalizar, pero también puede traer posibles problemas de rendimiento debido al uso de recursos de sombreador. A partir del lanzamiento de R600, CFAA utiliza filtros de tienda anchos y estrechos. Con estos, las muestras de fuera del píxel que se está procesando se ponderan linealmente en función de su distancia desde el centroide de ese píxel, con la función lineal ajustada en función del filtro ancho o estrecho elegido. [10]
Los controladores de memoria están conectados a través de un bus de anillo bidireccional interno que rodea al procesador. En la Radeon HD 2900, es un bus de anillo bidireccional de 1024 bits (512 bits de lectura y 512 bits de escritura), con 8 canales de memoria de 64 bits para un ancho de bus total de 512 bits en la 2900 XT. [9] En la Radeon HD 3800, es un bus de anillo de 512 bits; en las Radeon HD 2600 y HD 3600, es un bus de anillo de 256 bits; En las Radeon HD 2400 y HD 3400, no hay bus de anillo.
La serie experimentó una actualización de media generación con variantes de matriz reducida (55 nm): RV670, RV635 y RV620. Todas las variantes son compatibles con PCI Express 2.0, DirectX 10.1 con funciones Shader Model 4.1, decodificador de video unificado (UVD) de ATI dedicado para todos los modelos [19] y tecnología PowerPlay para tarjetas de video de escritorio. [20]
A excepción de la serie Radeon HD 3800, todas las variantes admitían dos salidas DisplayPort integradas, compatibles con pantallas de 24 y 30 bits para resoluciones de hasta 2560 x 1600. Cada salida incluía 1, 2 o 4 carriles por salida, con una velocidad de datos de hasta 2,7 Gbit/s por carril.
ATI afirmó que el soporte de DirectX 10.1 puede brindar un mejor rendimiento y eficiencia de procesamiento con un error de redondeo reducido (0,5 ULP en comparación con el error promedio de 1,0 ULP como error tolerable), mejores detalles y calidad de imagen, iluminación global (una técnica utilizada en películas animadas y más mejoras en los sistemas de juegos de consumo, brindando así una experiencia de juego más realista. [21] )
(ver lista de chips en esas páginas)
TeraScale 2 (VLIW5) se introdujo con las GPU de la serie Radeon HD 5000 en la generación "Evergreen".
En HPG10 Mark Fowler presentó el "Evergreen" y afirmó que, por ejemplo, el 5870 (Cypress), el 5770 (Juniper) y el 5670 (Redwood) admiten una resolución máxima de 6 veces 2560×1600 píxeles, mientras que el 5470 (Cedar) admite 4 veces 2560×1600 píxeles, lo que es importante para la compatibilidad con múltiples monitores de AMD Eyefinity . [22]
Con el lanzamiento de Cypress , la arquitectura del motor gráfico Terascale se ha actualizado con el doble de núcleos de flujo, unidades de textura y unidades ROP en comparación con el RV770. La arquitectura de los núcleos de flujo se mantiene prácticamente sin cambios, pero agrega compatibilidad con las capacidades de DirectX 11/ DirectCompute 11 con nuevas instrucciones. [23] También similar al RV770, cuatro unidades de textura están vinculadas a 16 núcleos de flujo (cada uno tiene cinco elementos de procesamiento, lo que hace un total de 80 elementos de procesamiento). Esta combinación se conoce como núcleo SIMD .
A diferencia de su predecesora , la Radeon R700 , como DirectX 11 exige un control total del desarrollador sobre la interpolación, se eliminaron los interpoladores dedicados y se confió en los núcleos SIMD. Los núcleos de flujo pueden manejar la instrucción de multiplicación-suma fusionada (FMA) de mayor precisión de redondeo tanto en precisión simple como doble, lo que aumenta la precisión sobre la multiplicación-suma (MAD) y es compatible con el estándar IEEE 754-2008 . [24] La instrucción de suma de diferencias absolutas (SAD) se ha agregado de forma nativa a los procesadores. Esta instrucción se puede utilizar para mejorar en gran medida el rendimiento de algunos procesos, como la codificación y transcodificación de video en el motor 3D. Cada núcleo SIMD está equipado con 32 KiB de uso compartido de datos locales y 8 kiB de caché L1, [23] mientras que todos los núcleos SIMD comparten 64 KiB de uso compartido de datos globales.
Cada controlador de memoria se vincula a dos ROP cuádruples , uno por canal de 64 bits, y a un caché L2 dedicado de 512 KiB. [23]
AMD PowerPlay es compatible, consulte allí.
TeraScale 3 (VLIW4) reemplaza los diseños VLIW de 5 vías anteriores por un diseño VLIW de 4 vías. El nuevo diseño también incorpora una unidad de teselación adicional para mejorar el rendimiento de Direct3D 11.
TeraScale 3 se introduce en las tarjetas gráficas de la marca Radeon HD 6900 y también se implementa en las APU Trinity y Richland .
AMD PowerTune, escalamiento de frecuencia dinámico para GPU, se introdujo con la serie Radeon HD 6900 el 15 de diciembre de 2010 y ha experimentado un desarrollo continuo, como se documenta en algunas revisiones de AnandTech . [25] [26] [27] [28]
En HPG11, en agosto de 2011, los empleados de AMD Michael Mantor (arquitecto senior) y Mike Houston (arquitecto colega) presentaron Graphics Core Next , la microarquitectura que sucede a TeraScale. [29]
1 Los chips Duo como el R680 (2x RV670) y el R700 (2x RV770) no están incluidos en la lista. [94] [95] [96] [97]
{{cite web}}
: CS1 maint: copia archivada como título ( enlace )