Blog Personal.

AMD, Conceptos Básicos, Futuro, Radeon

Cosas varias de AMD Radeon

Una de las cosas que esta dando que hablar respecto a RDNA2 es la diapositiva que mostro Microsoft donde se dice que las unidades de texturas no pueden funcionar al mismo tiempo que la unidad de intersección de rayos.

Esto tiene reminiscencias de una patente de AMD titulada TEXTURE PROCESSOR BASED RAY TRACING ACCELERATION METHOD AND SYSTEM cuya descripción inicial dice lo siguiente:

Se describe un método y un sistema acelerador de trazado de rayos basado en un procesador de texturas.

La FIG. 10 es un diagrama de bloques más detallado de un ejemplo de sistema acelerador de trazado de rayos basado en un procesador de texturas 1000 de acuerdo con ciertas implementaciones. El sistema de acelerador de trazado de rayos basado en el procesador de texturas incluye una unidad de shader o procesador de shaders 1005 conectado o en comunicación con (colectivamente «conectado a») un procesador de texturas 1010, que a su vez está conectado a una caché 1015. El procesador de texturas 1010 incluye una unidad de dirección de textura (TA) 1020 que está conectada a un caché de textura (TCP) 1025, que a su vez está conectado al caché 1015. La unidad de dirección de textura 1020 y la caché de texturas 1025 también están conectados a la unidad de datos de textura (TD) 1030. La unidad de datos de textura 1030 es una unidad de filtrado de datos que incluye una unidad de filtraje de texturas 1040 que está funcionando en paralelo con el motor de intersección 1045. El motor de intersección 1045 está conectado a la unidad de sombreado 1005 a través de una ruta de retorno de datos de textura 1050. En una implementación, la unidad de tubería de filtrado 1040 y el motor de intersección 1045 pueden integrarse. En otra implementación, la unidad de datos de textura 1030 puede incluir solo el motor de intersección 1045.

 Si os perdéis os los traduzco:

  • La Shader Unit 1005 es el resto de la Compute Unit, es decir las unidades SIMD y sus registros, el Scratchpad Local, el Local Data Shader y el Planificador.
  • La Cache 1015 son las caches que están están a niveles más alejados de la Compute Unit (caches L1 y L2 en el caso de la arquitectura RDNA).
  • La Texture Address (TA) es la unidad de hacerle la petición de un dato concreto al TCP.
  • El TCP es la Cache de datos de la Compute Unit (L0 en RDNA) y incluye las unidades Load/Store, unas 16 unidades que lo que hacen es copiar 16 datos (4 bytes por dato) directamente a la unidad de datos de textura que integra las unidades de filtraje de texturas o la unidad de intersección.

¿Que es lo que ha hecho AMD? Pues que la unidad de intersección y la unidad de filtraje de texturas utilicen el mismo camino de datos a la cache L0 a través de las unidades Load/Store que antes solamente se utilizaban para el filtrado de texturas y esto es el punto en que RDNA2 se difiere de Turing ya que las unidades de intersección tiene un camino a la cache de datos del SM (Como Nvidia llama a sus CUs) en vez de compartirlo con la unidad de filtrado de texturas.

¿A que se debe esto? Pues al hecho que la memoria utilizada en las caches es SRAM multipuerto y por tanto pueden tener más de un cliente, el hecho de aumentar la cantidad de clientes supone aumentar los puertos de dicha SRAM y tener que replantear todo el cableado con sus clientes. AMD con RDNA2 ha decidido utilizar la misma SRAM que con RDNA por lo que no había un hueco para la unidad de intersección. ¿La solución? Hacer que su acceso sea compartido con la unidad de filtrado de texturas pero la contrapartida es que ambos al compartir el acceso pues este es conmutado para ambos, cuando uno accede no puede el otro y viceversa.

El hecho de tener que re-tocar la Cache L0 supondría tocar la Cache L1 y de paso la Cache L2, provocando que la implementación de las unidades de intersección en cada Compute Unit suponga un cambio en toda la infraestructura de intercomunicación entre las caches.

¿Como afecta esto? Bueno, con el Inline Raytracing cualquier étapa del pipeiine puede invocar la unidad de intesección pero en el caso del Pixel/Fragment Shader en AMD que es la única que utiliza la unidad de filtrado de texturas no es así por lo que esto nos lleva a la siguiente pregunta relacionada con otra diapositiva mostrada en el Hot Chips.

He estado investigando un poco y la patente que he encontrado relacionada es de la propia Microsoft y no de AMD y se llama Texture residency hardware enhancements for graphics processors y no tiene que ver con la unidad de texturas sino con el Sampler Feedback Streaming. No me he leido del todo la patente pero diría que permite almacenar de vuelta el resultado de los texeles ya filtrados para poder recuperarlos de nuevo de manera unitaria en vez de volver a ejecutar el filtrado de texturas, dejando libre el camino a la unidad de intersección ya que el filtrado no sería necesario dado que se habría hecho previamente, pero tengo que leerme de nuevo la patente por lo que esto no lo toméis al pie de la letra, que solo es una primera lectura.

Lo otro que me gustaría destacar es algo que ha salido en un mapa de ruta que se ha filtrado.

Las siglas parecen ser la de Computer Vision Machine Learning y tenemos que entender que es la Computer Vision antes de nada:

La visión artificial, también conocida como visión por computadora (del inglés computer vision) o visión técnica, es una disciplina científica que incluye métodos para adquirir, procesar, analizar y comprender las imágenes del mundo real con el fin de producir información numérica o simbólica para que puedan ser tratados por un ordenador. Tal y como los humanos usamos nuestros ojos y cerebros para comprender el mundo que nos rodea, la visión artificial trata de producir el mismo efecto para que los ordenadores puedan percibir y comprender una imagen o secuencia de imágenes y actuar según convenga en una determinada situación. 

En el mapa de ruta, el SoC/MCM Van Gogh aparece con una unidad llamada CVML (Computer Vision Machine Learning)

Si nos atenemos a la definición de «Computer Vision» entonces concluimos que el CVML esta asociado a una cámara de vídeo que captura el mundo real y por tanto con la unidad de codificación de video. ¿Donde hemos visto eso previamente? Pues es algo que trate en su día con una larga entrada de manera previsora.

Y no, no son «Tensor Cores» al estilo Nvidia al no encontrarse dentro de las Compute Units (conjunto A de la GPU), tampoco en el conjunto B ni en el C sino en el Conjunto D ya que es la fusión de las unidades de codificación de vídeo con las unidades inferencia Machine Learning. En realidad se parece más a los Neural Engines de los SoC para dispositivos PostPC que a los Tensor Cores de Nvidia y dudo que sean las unidades matriciales de CDNA y RDNA3.

Esto es todo, tenéis los comentarios de esta misma entrada para comentar y no olvideis que tenemos Discord.

4.5 4 votes
Article Rating
3 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Franer

Entiendo entonces que al ser conmutado el golpe en el rendimiento va a ser enorme al usar el raytracing

anon