Whatcookie, un desarrollador de software detrás de RPCS3, un emulador de Sony PlayStation 3 de código abierto multiplataforma, ha lanzado un parche que utiliza las instrucciones AVX-512 y brinda un aumento del rendimiento del 30% al emulador. Hasta ahora, las instrucciones del AVX-512 no tenían mucho sentido para los juegos. Pero en el caso de un emulador de PS3, un gran archivo de registro de hardware compatible con AVX-512, el paralelismo de nivel de datos y el compilador LLVM pueden hacer maravillas.
Pero antes de explicar cómo las instrucciones AVX-512 tienen sentido para RPCS3, lo cual Whatcookie explicó en su detallada publicación de blog, echemos un vistazo rápido a la historia informática reciente.
Cuando necesita emular Cell, necesita paralelismo explícito y registros de archivos grandes, una combinación que ofrecen los procesadores AVX-512. Resulta que el compilador LVVM elige automáticamente la mejor ruta de código posible, lo que en el caso del hardware compatible con AVX-512 significa una ruta de código adecuada. Por razones obvias (después de todo, estamos hablando de emulación) esto no es exactamente lo ideal, por ejemplo, no todos los registros de máscara son utilizables.
AVX-512 también agrega nuevos registros de máscara que se pueden usar opcionalmente con instrucciones codificadas EVEX”, escribió Whatcookie. “Hay nuevas instrucciones de comparación que generan una máscara en los registros de máscara como resultado de una comparación entre vectores. Cuando se utiliza un registro de máscara como operando, todos los elementos no seleccionados por la máscara se pondrán a cero o dejarán intacto el valor existente en el registro de destino. Hay 8 registros de máscara, en k0 - k7, sin embargo, solo k1 - k7 se puede usar para enmascarar cosas, ya que k0 se comporta implícitamente como si todos los elementos estuvieran seleccionados.
Sin embargo, los números hablan por sí solos. Una mejora del rendimiento del 30% es significativa. Algunos pueden preguntarse por qué molestarse con este tipo de optimización considerando que ya superamos los 120 fps en nuestra mejor CPU para juegos, la Alder Lake Core i9-12900K de Intel. La respuesta es que habrá máquinas menos potentes que aún se beneficiarán de esta optimización.
Cuando Sony presentó su PlayStation 3 basada en el procesador Cell con un núcleo de energía de uso general y ocho elementos de procesamiento sinérgico (SPE), una arquitectura de conjunto de instrucciones patentada con ejecución en orden y una organización SIMD de 128 bits, la industria del juego no estaba exactamente impresionado ya que Cell era tan diferente de los procesadores convencionales de 2006. Algo similar sucedió con las instrucciones AVX-512 de Intel introducidas con sus aceleradores de supercomputadora Xeon Phi. 'Knights Landing' de 2013 y luego agregado a los procesadores de escritorio Skylake-X (y el generación de Xeon escalable).
El nivel de subprocesos (multinúcleo/multiproceso) y el paralelismo de nivel de datos (SIMD) son excepcionalmente buenos para la informática de alto rendimiento (HPC), los centros de datos, las cargas de trabajo de codificación y cifrado e incluso los juegos, pero a veces son difíciles de explotar. La base de hardware, la complejidad del código, el costo, el tiempo de comercialización y muchas otras consideraciones dictan que no se deben invertir recursos en el desarrollo de software que utilizaría todas las innovaciones de CPU (o GPU) en el lado del cliente. Este enfoque de los videojuegos se considera bastante bueno, lo cual es una de las razones por las que Microsoft y Sony están en x86 (con AVX2, pero sin AVX-512) con arquitectura de gráficos Radeon convencional.
Deja una respuesta