Blog Personal.

Uncategorized

Audio en la Next Gen (Feedback)

Comentario#1:

Me parece super interesante lo que nos has explicado.

¿Pero como cuadra eso con la filtración del chip de audio dedicado para la Xbox Series X? Si el posicionamiento lo van a calcular mediante Raytracing en la GPU,¿cuál es la necesidad de un chip dedicado?

«We’re going to have a dedicated chip to work with audio, which means we finally won’t have to fight with programmers and artists for memory and CPU power.»

Xbox Series X will have a dedicated audio chip, Ninja Theory engineers reveal

https://www.videogameschronicle.com/news/xbox-series-x-audio/

Divagando¿será que todos los calculos que hacia la CPU no se pueden hacer mediante el trazado de rayos de la GPU? Y po lo tanto se tendrian que seguir haciendo en la CPU. Y Microsoft lo que ha hecho es añadir hardware dedicado para descargar completamente al procesador de estas tareas.¿Puede ser?

Xbox One y Xbox One X tienen procesador de audio dedicado que hace precisamente eso que dices, quitarlo significaría tener que emularlo para la compatibilidad hacia atrás perdiendo mucho rendimiento en ello, ergo ya tienes tu chip de audio dedicado en Xbox Series X, pero las soluciones para el audio en el caso de ambas familias (PS4 y Xbox One) son cuanto menos curiosas y en esta entrada os hablare de algo que muy poca gente conoce.

Recordemos antes de nada que los sistemas de Audio tanto de PS4 como de Xbox One se dividen en dos partes.

  • Una parte genérica, basada en la tecnología de Cadence/Tensilica.
  • Una parte propietaria, que por un lado es una extensión en los DSP de Cadence/Tensilica y por la otra son una serie de unidades de función fija propietarias.

Empezando por la parte genérica, es lo que en su día AMD llamo como TrueAudio.

Los núcleos «DSP» (luego veréis el porque de las comillas) utilizados tanto en la familia PS4 como Xbox One son en teoria Tensilica HiFi EP modificados para estos dos fabricantes.

(1)

Aprovechando el éxito de su HiFi 2 Audio DSP, la arquitectura líder para audio en diseños de sistema en chip (SOC), Tensilica presentó hoy HiFi EP, un superconjunto de la arquitectura HiFi 2 que está optimizado para el soporte de códec multicanal simultáneo y / o expandir continuamente el procesamiento previo y posterior de audio en productos de entretenimiento doméstico como reproductores de discos Blu-ray, televisión digital (DTV) y teléfonos inteligentes. También se ha mejorado para un procesamiento previo y posterior de voz muy eficiente y de alta calidad. Estas mejoras dan como resultado una potencia hasta un 40 por ciento menor y una reducción de tamaño de hasta un 50 por ciento.

Si buscamos información sobre Hi-Fi 2 veremos que es una version extendida para Audio del Xtensa XL de la propia Cadence/Tensilica.

Xtensa es un conjunto de registros e instrucciones como x86, ARM, PPC cuya especificación se puede encontrar aquí. La idea es que ese conjunto de registros e instrucciones no es fijo y puede ser modificado a necesidad del cliente. Tensilica/Cadence provee una herramienta llamada Xtensa Processor Generator donde los clientes pueden hacer cambios al diseño y tener una versión en VHDL o Verilog de dicho núcleo. El funcionamiento de dicha herramienta es curioso y es ideal para crear además unidades de función fija de manera muy pero que muy fácil.

¿Como funciona? El siguiente diagrama lo explica muy bien.

Básicamente lo que creamos es una función en C o C++ (preferiblemente C) y lo que hace el compilador es generar varios para dicha función o serie de funciones y entonces escogemos uno de ellos, el cual va a poder colocarse como extensión al Xtensa XL para generar una unidad especializada en una tarea en concreto. Por ejemplo el Xtensa Hi-Fi 2 contiene el hardware necesario para descodificar ciertos formatos de audio, pero no todos.

Uno de los cambios que hizo Microsoft fue la capacidad de codificar y decodificar el formato XMA, Sony por otro lado hizo lo mismo con los formatos ATRAC. Esto lo hicieron sin tener que hacer un chip desde cero, sino utilizando las herramientas de Cadence/Tensilica para generar los núcleos necesarios para dichas funciones en concreto por lo que no hablamos de un núcleo en concreto o una serie de núcleos concretos en este caso. La capacidad de generar unidades especializadas a medida que da la tecnología de Cadence/Tensilica hace que haya un cierto nivel de disparidad entre las diferentes soluciones y al mismo tiempo las hace lo suficientemente propietarias como para que no estén lo suficientemente documentadas ya que no van a ser utilizadas más allá que por un fabricante.

En realidad esas unidades especializadas no son más que micro controladores Xtensa LX con los añadidos correspondientes por el cliente. No son unidades de función fija puras pese a que ejecutan todo el rato el programa que tienen en memoria y llevan consigo las unidades necesarias para ejecutar dicho programa. Pero dicho programa no se encuentra accesible en la RAM del sistema sino en una RAM privada del propio micro controlador. Los únicos datos que podemos enviar son los datos que queremos que trate el algoritmo o serie de algoritmos que ejecuta el micro controlador, el cual nos va a dar como información de salida el resultado de aplicar dicho algoritmo.

Es por ello que AMD lo llama DSP en sus diapositivas por el hecho que enviamos un flujo de datos (señal) que son transformados/procesados. La utilidad más clara es de cara a la codificación/decodificación y no solo de audio sino también de vídeo e incluso de compresión y descompresión de datos a tiempo real. La paradoja es que este tipo de núcleos están dentro de cualquier procesador contemporáneo sea del tipo que sea pero no los conocéis casi por el hecho de que no ejecutan programas convencionales sino que hacen tareas especificas y de función fija dentro de cada procesador y hay varios de ellos. Son ampliamente utilizados por el hecho de que en cuestión de tiempo de desarrollo sale más a cuenta desarrollar el algoritmo en C, compilar generando el código VHDL/Verilog e ir probando en un FPGA las diferentes soluciones que nos da dicho compilador para obtener la mejor solución de todas.

¿A que viene toda esta explicación? Sinceramente no se que tipo de mejoras van a integrar tanto Sony como Microsoft a nivel de audio respecto a la siguiente generación. El motivo de ello es como he explicado, la tecnología de Cadence/Tensilica te permite crear soluciones a medida y es altamente configurable. Esto no es como AMD donde los bloques básicos no los puedes modificar aunque puedes colocarlos como quieras dentro de unos limites sino que aquí esos bloques básicos si que son configurables y cada fabricante tiene su diseño propio pese a que todos sean versiones modificadas del Xtensa LX y os sorprendería la cantidad de unidades de función fija que se basan en el Xtensa LX, no solamente para al audio.

Esto es todo, tenéis el Discord y los comentarios de esta entrada para comentarla.