Las estaciones de trabajo para audio a 64 bits

Este es un extracto de la conferencia realizada con motivo del SAE Media Show en Abril de 2009.

Introducción

longNos encontramos aún (primavera de 2009) en un periodo de transición entre los sistemas de 32 bits y de 64 bits que se ha hecho más largo de lo que todos desearíamos, pero que con el tiempo puede que nos parezca apropiado dada la envergadura de la actualización. Hace 14 años se dio una transición similar entre los sistemas de 16 y 32 bits -recordemos los tiempos de Windows 95 y Mac OS 7- de la que apenas nos acordamos pero que fue también compleja ya que aportaba grandes avances y estos habían de acometerse causando el menor impacto posible y sentando las bases para la migración con sistemas híbridos que aprovechasen las nuevas características de los nuevos sistemas manteniendo la compatibilidad con los antiguos, lo cual se convierte siempre en un engranaje complejo.

Lo primero que debemos hacer es, dejar claro qué no es un sistema informático de 64 bits:

  • 64 bits no hace referencia a la cuantificación del audio.
    La cuantificación de las señales de audio PCM son habitualmente de 16 o 24 bits, lo que nos da rangos dinámicos de entre 96 dB (16 bits) y 144 dB (24 bits) teóricos. En raras ocasiones nos podemos encontrar también cuantificaciones de 32 bits en coma flotante. Pero si 24 bits ya nos da un rango dinámico muy superior al del oído humano, que se encuentra en el mejor de los casos en unos 120 dBs, no tiene sentido de hablar de cuantificaciones mayores que ni siquiera nuestro perro puede apreciar. Por ello, las cuantificaciones en las señales de audio siguen siendo a 24 bits y no notaríamos mejora alguna aumentándola.
    [http://en.wikipedia.org/wiki/Audio_bit_depth]
  • 64 bits no hace referencia a la precisión usada en el procesado de las señales de audio.
    Cuando se procesan (se operan matemáticamente) señales digitales de x bits (x dígitos), se usa una precisión (nº de dígitos) mayor que x bits. Por ejemplo, dos número decimales de 1 dígito sumados pueden dar un resultado de 2 dígitos (7+4=11), al igual que 15 números de 1 dígito sumados pueden resultar en una resultado de 3 dígitos. A esto se le llama desbordamiento (overflow). Es por ello que cuando operamos señales digitales de 16 o 24 bits, la precisión usada en las operaciones es siempre mayor que la precisión de los operandos para evitar tales desbordamientos en el resultado. De ahí que cuando en una mesa digital se suman señales digitales de 16 bits se dice que internamente la precisión es de 64 bits para que el resultado de tales sumas nunca supere los 64 bits y así evitar el desbordamiento.
  • El mito del aumento de rendimiento por parte de los sistemas de 64 bits.
    Como veremos a continuación, los sistemas de 64 bits no realizan las operaciones de cálculo en la mitad de tiempo que los sistemas de 32 bits -tan sólo algunas operaciones de máquina se ven beneficiadas por los registros internos de los procesadores de 64 bits- y por lo tanto no es cierto que el rendimiento de tales sistemas doble al de los sistemas de 32 bits. Eso no quiere decir que no puedan haber mejoras en el rendimiento de algunas operaciones, pero para ello se requieren aplicaciones compiladas y optimizadas para soportar las mejoras de los procesadores de 64 bits y que en el mejor de los casos supone aumentos del rendimiento poco espectaculares -vayamos pues olvidándonos de doblar la potencia-.

Lo primero que debemos de tener en cuenta es que para poder afirmar que un sistema es de 64 bits, tanto el Hardware como el Software (Sistema Operativo, Controladores, Aplicaciones y SubProcesos) han de ser todos ellos de 64 bits. Vamos a estudiar cada uno de los eslabones que forman esta cadena.

Hardware

El factor clave de los sistemas de 64 bits es el acceso a la memoria. Los sistemas de 64 bits permiten direccionar hasta 16 ExaBytes (16 Millones de TeraBytes) de memoria donde los de 32 bits tienen como límite 4 GigaBytes, un tamaño que hoy día se ha quedado corto para cualquier especificación seria.

Arquitectura de los microprocesadores

Un microprocesador se dice que es de 64 bits cuando el Bus de datos, el Bus de direcciones y los registros son de 64 bits. [http://en.wikipedia.org/wiki/64-bit]

  • Bus de datos de 64 bits (8 Bytes). El bus de datos hace referencia al tamaño del paquete de datos que se procesan simultáneamente. Cuando se accede a una celdilla de memoria con un bus de 64 bits, los datos que se leen o se escriben tienen un tamaño de 64 bits, aunque se pueden leer/escribir 32 bits e incluso muchos procesadores de 32 bits tenían un bus de datos de 64 bits.
  • Bus de direcciones: El ancho del bus de direcciones determina la cantidad de memoria a la que un sistema puede acceder.
    • 32 bits —> 2 ^ 32 = 4.294.967.296 Bytes / 1024 = 4.194.304 KB / 1024 = 4.096 MB / 1024 = 4 GB
      Un microprocesador de 32 bits no puede acceder a tamaños de memoria por encima de 4 GB de ninguna manera ya que el bus de direcciones de 32 bits no permite direcciones mayores al igual que con 3 dígitos decimales no podemos referenciar más de 1.000 diferentes combinaciones de números decimales (desde el 000 al 999).
    • 64 bits —> 2 ^ 64 = 18.446.744.073.709.551.616 Bytes / 1024 = 18.014.398.509.481.984 KB / 1024 = 17.592.186.044.416 MB / 1024 = 17.179.869.184 GB / 1024 = 16.777.216 TB / 1024 = 16.384 PB / 1024 = 16 EB (ExaBytes)
      Un microprocesador de 64 bits tiene teóricamente un límite de más de 16 Millones de TeraBytes de direcciones de memoria, aunque en la práctica vienen limitados a mucho menos -obviamente no necesitamos tales cantidades de memoria en la actualidad-.
  • Registros de 64 bits: Internamente el microprocesador usa los registros como almacenes temporales de las operaciones que realiza, por lo que si los datos que se procesan son de 64 bits, estas “memorias” internas han de ser de un tamaño superior a 64 bits -en la práctica son incluso de hasta 80 bits o más-.

Software

Una vez que contamos con sistemas hardware de 64 bits en el mercado desde aproximadamente el año 2004, es el software el siguiente eslabón de la cadena que debe de ser de 64 bits. Recordemos que para que un sistema se pueda considerar de 64 bits, tanto el hardware como todo el software (sistema operativo y aplicaciones) ha de ser de 64 bits. De lo contrario desaprovecharemos las capacidades que estos sistemas nos brindan ya que un sistema operativo de 32 bits, aunque suele funcionar correctamente sobre hardware de 64 bits, no será capaz de reconocer cantidades de memoria por encima de 4 GB. Del mismo modo, aunque el sistema operativo y el hardware sean de 64 bits, si las aplicaciones que corremos son de 32 bits, tampoco podrán reconocer el espacio de memoria por encima de 4 GB que el sistema operativo junto con el hardware le brinda.

Vamos a dividir este apartado en 3 sub-apartados: Los Sistemas Operativos que son la base sobre la que corren las aplicaciones, la aplicaciones propiamente dichas (como el Secuenciador de Audio/MIDI) y los Sub-Procesos (que serían los plugins).

Sistemas Operativos

En computación, el “Kernel” es el componente central de la mayoría de sistemas operativos. Entre sus responsabilidades se incluye en manejo de los recursos del sistema (la comunicación entre los componentes hardware y el software). Como componente básico de un sistema operativo, un Kernel provee la capa de abstracción de más bajo nivel para los recursos (especialmente memoria, procesador y dispositivos de entrada y salida) que las aplicaciones software deben de controlar para poder desarrollar sus funciones.

  • Familia Microsoft Windows.
    • Windows XP Home / Professional son sistemas operativos de 32 bits.
      • Lanzado en 2001. En Mayo de 2008 fue lanzado el Service Pack 3 (SP3).
      • Los sistemas operativos de Microsoft basados en tecnología NT (Como Windows 2000 o XP) poseen un espacio de direcciones virtuales de 32 bit capaces de direccionar hasta 4 Gigabytes de memoria virtual. Este espacio de direcciones se divide en 2 GB que son directamente accesibles por las aplicaciones y otros 2 GB sólo accesibles por el sistema operativo (el Kernel y los componentes del sistema).
      • Con el modificador /3GB del boot.ini podemos hacer disponer de hasta 3 GB de memoria a las aplicaciones. [http://www.microsoft.com/whdc/system/platform/server/PAE/PAEmem.mspx]
      • Los dispositivos hardware instalados en el sistema se comunican con el sistema operativo a partir de rangos de memoria establecidos por los drivers. Tal asignación de memoria a los dispositivos en sistemas de 32 bits con 4 GB de RAM se efectúan en la parte alta de la memoria, es decir, desde 4 GB hacia abajo, por lo que sucede habitualmente que esas franjas de memoria reservadas no las pueden usar las aplicaciones, reduciéndose en la mayoría de los casos a rangos de entre 3 y 3,5 GB la memoria total reconocida por el sistema operativo. Esto no ocurre en los sistemas de 64 bits ya que las reservas de memoria se asignan en la parte alta que ahora es de 16 ExaBytes y por ello no se solapa con la memoria habitualmente instalada en el sistema -que en la actualidad no suele superar los 48 GB-.
    • Windows XP Professional x64 edition.
      • Lanzado al mercado en 2005 y basado en Windows 2003 Server SP1.El Service Pack 2 (SP2) para Windows XP Professional x64 Editions fue lanzado en Marzo de 2007.
      • Requiere, como todos los sistemas operativos de 64 bits de Microsoft que los drivers sean de 64 bits y no permite la instalación de drivers de 32 bits.
      • Soporta aplicaciones de 32 bits que corren bajo el subsistema WoW64 [http://en.wikipedia.org/wiki/WOW64]
      • En Junio de 2008 Microsoft cesó todo soporte futuro sobre este sistema operativo así como el lanzamiento de Service Packs para esta plataforma.
      • Los fabricantes de software de audio en su mayoría han abandonado el soporte para este sistema operativo en favor de Vista x64.
    • Windows Vista x64
      • Lanzado en Enero de 2007 y muy criticado en sus orígenes, en Febrero de 2008 fue lanzado el Service Pack 1 (SP1) que supuso un avance considerable en rendimiento, compatibilidad y prestaciones.
      • Tienen impuesto un límite de 16 TB de espacio de direcciones.
      • Requiere que los drivers sean de 64 bits y no permite la instalación de drivers de 32 bits, aunque soporta la mayoría de drivers de 64 bits diseñados para XP Pro x64 edition.
      • Soporta aplicaciones de 32 bits que corren bajo el subsistema WoW64 [http://en.wikipedia.org/wiki/WOW64]
      • En la actualidad (Abril 2009), casi todos los fabricantes de hardware y software de audio se han volcado en dar soporte para este sistema operativo y han anunciado versiones de 64 bits que aparecerán antes de 2010 e incluso muchos de ellos ya disponen de versiones compiladas que funcionan de forma estable -caso de Cubase v5 y Sonar 8-.
  • Mac OS X:
    • A partir de la versión 10 (X), Mac OS se anuncia como un sistema operativo de 64 bits aunque por aquel entonces apenas existen aplicaciones compiladas a 64 bits ni hardware de Apple que lo soporte.
    • El Kernel de Mac OS X (hasta la futura v10.6) no es de 64 bits. Soporta aplicaciones en modo usuario de 64 bits, es decir, que las aplicaciones pueden acceder a memoria por encima de los 4 GB, pero el Kernel en sí mismo corre en modo 32 bits y está limitado al espacio de direcciones de 4 GB. Tanto corriendo sobre CPUs de 32 como de 64 bits, MAC OS X carga el mismo Kernel y este corre como un proceso de 32 bits aunque cuando se ejecuta sobre hardware de 64 bits el Kernel conmuta a un “Modo de compatibilidad extendido”
    • Al ser el Kernel de 32 bits, los drivers siguen siendo de 32 bits por lo que se evita la reescritura de drivers de 64 bits tanto por parte de Apple como de terceras partes.
    • Hasta la versión 10.3 (Panther) nada excepto el soporte de más de 4 GB de memoria física era de 64 bits. Los programas no podían acceder por encima del máximo de direcciones soportadas a 32 bits, es decir, 4 GB.
    • En la siguiente versión, la 10.4 (Tiger), aparecieron los primeros signos de 64 bits. Era posible correr programas de 64 bits en la terminal o en background.
    • En la versión 10.5 (Leopard), la API Cocoa, una de las principales del sistema, soporta 64 bits.
      [http://arstechnica.com/apple/news/2007/06/64-bit-support-in-leopard-no-carbon-love.ars]
    • Para la versión 10.6 (Snow Leopard. Prevista para Septiembre de 2009) se espera el primer kernel de 64 bits. “Por vez primera, aplicaciones de sistema como Finder, Mail, iCal, iChat y Safari serán de 64 bits”. Se requerirán además drivers de 64 bits, lo cual generará una lenta implementación debido a los retrasos en los lanzamientos de tales drivers por parte de los fabricantes.
      [http://www.appleinsider.com/articles/08/10/28/road_to_mac_os_x_snow_leopard_64_bit_to_the_kernel.html]
      leopard-081028
  • Linux: Soporta Kernels de 64 bits y dispone de drivers para una gran cantidad de dispositivos desde hace varios años. Existen distribuciones totalmente compiladas a 64 bits y alguna de ellas específicas para trabajar audio y con cierta solera como la famosa 64 Studio [http://www.64studio.com/]

Aplicaciones

Centrémonos ahora en las aplicaciones relacionadas con el audio. De todas ellas, especialmente una aplicación es la principal responsable de ingentes necesidades de memoria: Los samplers.

¿Cómo funcionan samplers virtuales tipo GigaStudio/Kontakt / EastWest Play?

Los samplers virtuales comoGigaStudio, Halion o Kontakt son capaces de disparar programas de muestras de varios gigabytes de tamaño. Antiguamente, los samplers leían las muestras de la memoria, por lo que primero, todas las muestras de un programa eran pasadas del disco duro a la memoria y tras ello podían ser leídas desde el sampler ya que la memoria del sistema es un medio de almacenamiento muy rápido, aunque de tamaño moderado. Los antiguos samplers hardware tenían entre 16 y 256 MB de memoria (cuando no menos) lo que limitaba considerablemente el tamaño de los programas cargados en la memoria. Con la aparición de GigaSampler, la tecnología de los samplers cambió radicalmente ya que este software para PC permitía cargar muestras de un tamaño casi ilimitado puesto que las muestras se leen del disco duro directamente. Esto es en realidad, una verdad a medias.

El disco duro es un medio de almacenamiento lento aunque de gran capacidad, de ahí que el límite en el tamaño de las muestras lo imponga el tamaño del disco duro (varios cientos de gigabytes hoy día). Pero al ser un medio de almacenamiento lento -comparado con la memoria RAM del sistema-, el comienzo de cada una de las muestras que componen el programa se pre-cargan en memoria. De esa manera, cuando disparamos un sonido, el sampler comienza a leerlo desde la memoria, ya que es un medio de acceso rápido, y mientras que está leyendo el comienzo de cada muestra de la memoria, el sampler va buscando el resto de la muestra del disco duro -que es un medio de acceso más lento-, por lo que cuando termina de leer el comienzo de la muestra desde la memoria, continua leyéndola desde el disco duro sin interrupciones. De ahí que los samplers basados en disco duro requieran también una cierta cantidad de memoria para pre-cargar las muestras. En casi todos estos samplers por software, podemos determinar la cantidad de tiempo que se pre-carga en memoria de cada una de las muestras. Si ese tiempo es muy grande, al final necesitaremos gran cantidad de memoria hasta el punto que podemos llegar a cargar todas las muestras en memoria y de esta manera no se leerían desde el disco duro; sin embargo, si cogemos tiempos de pre-carga cortos, usaremos muy poca memoria pero podríamos llegar a saturar el disco duro, por lo que si no es lo suficientemente rápido podremos encontrarnos interrupciones en el audio e incluso una reducida polifonía. Es imprescindible en este tipo de samplers basados en disco duro, poder disponer de discos rápidos o mejor aún formaciones de discos en RAID 0 que duplican la tasa de transferencia.

Por lo tanto, son los músicos que utilizan samplers con muestras de gran capacidad -samplers orquestales, romplers, baterías multisampleadas, etc.- los principales afectados por la limitación de los sistemas operativos de 32 bits a acceder a tan sólo 4 GB de RAM.

Distingamos ahora 2 tipos de aplicaciones de audio: los secuenciadores y los plugins. Se puede decir que generalmente el secuenciador es la aplicación principal que usa el músico o productor para “componer” los proyectos de audio. Dentro del secuenciador se manejan pistas de audio, de MIDI y se usan plugins tanto para procesar audio (efectos) como para generar sonidos de síntesis (instrumentos).
Los plugins suelen correr como subprocesos dentro del proceso/secuenciador (host), por lo que conforme cargamos más plugins, el consumo de memoria del proceso/secuenciador aumentará. En un sistema de 32 bits, las aplicaciones no pueden, salvo excepciones, usar más de la mitad de memoria del sistema. Si esta memoria está limitada a 4 GB, eso quiere decir que ningún secuenciador, junto con sus subprocesos/plugins, puede acceder a cantidades de memoria por encima de 2 GB ya que la otra mitad de la memoria está reservada para el sistema operativo.

  • Secuenciadores:
    • Steinberg Cubase / Nuendo:
      • Con la versión 5 (Enero de 2009) dispone de una versión (no beta) de 64 bits.
      • La versión de 64 bits permite correr plugins de 32 y de 64 bits
      • Los plugins de 32 bits corren dentro de un entorno llamado VSTBridge que corre como un proceso separado del proceso/secuencidador. La ventaja es que el consumo de memoria de estos subprocesos no aumenta el consumo de memoria del proceso/secuencidador ya que son procesos que corren paralelamente. La desventaja es que este “intermediario” penaliza en el rendimiento, por lo que aumenta el consumo de CPU.
    • Apple Logic:
      • Hasta el momento sigue siendo una aplicación de 32 bits.
        [http://community.sonikmatter.com/forums/index.php?showtopic=37053]
      • Pero a pesar de ello, como los plugins AudioUnits corren como procesos paralelos al secuenciador y no dentro de el, pueden cargarse paralelamente procesos/plugins que consumirán su memoria hasta alcanzar el máximo de memoria del sistema sin aumentar el consumo de memoria del proceso/secuenciador, por lo que no correremos el peligro de que el proceso/secuenciador supere los 4 GB máximos permitidos a una aplicación de 32 bits.
        [http://discussions.apple.com/thread.jspa?messageID=7660966]
    • Cakewalk Sonar: Desde la versión 7 (Septiembre de 2007) es una aplicación de 64 bits.
    • Digidesign ProTools LE y HD: Digidesign no ha confirmado a día de hoy fecha para un lanzamiento de las versiones de 64 bits de sus secuenciadores, que por ahora no funcionan en sistemas operativos Windows de 64 bits.
    • Reaper: Dispone desde hace poco de una versión de 64 bits.
  • Plugins de 64 bits:
    • Los propios que vienen con los secuenciadores (Cubase v5, Sonar v7)
    • EastWest Play Engine
    • Kontakt v3.5 (beta)
    • Guitar Rig v3.2.1

Resumen

  • Ventajas
    • Poder manejar cantidades de memoria por encima de 4 GB
    • Poder abrir archivos de más de 4 GB (imágenes para editar)
    • Mayor número de registros en el procesador y por lo tanto mejoras en el manejo de datos que pueden mejorar el rendimiento de las aplicaciones, siempre y cuando estén compiladas para procesadores de 64 bits.
  • Inconvenientes:
    • Además del Hardware, todo el Software ha de ser de 64 bits: Sistema Operativo > Drivers > Aplicaciones (Procesos) > Plugins(SubProcesos)
    • Dado que la mayoría de software en la actualidad está compilado a 32 bits, bajo un S.O. de 64 bits ha de implementarse un subsistema de 32 bits (WoW64 en Windows 64) que penaliza el rendimiento de las aplicaciones.
    • Escaso soporte de drivers a 64 bits.
    • Escaso número de aplicaciones compiladas a 64 bits

No Comments

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment