28 de octubre de 2011

ARM v8

Una de las consecuencias más importantes, pero menos mencionadas, de la desaparición de MeeGo es que a Intel le ha salido por la culata su plan de luchar contra ARM en cacharros portables, plan en el que Nokia ocupaba, sin ninguna duda, un lugar importante. Tanto como el que ocupa para Microsoft hoy.

La batalla ARM vs x86 acaba de calentarse de nuevo tras la aparición de ARM v8. Si ya de por si ARM estaba empezando a hacerse un pequeño hueco en el universo de los servidores (resulta que la misma eficiencia que les da dominio en dispositivos móviles puede ayudar a reducir la factura de la electricidad en datacenters), el hecho de que hayan (¡por fin!) diseñado una arquitectura con soporte de 64 bits se lo va a poner más fácil. Es para destacar que la primera plataforma basada en ARMv8 sea una plataforma para servidores, y no para teléfonos móviles o routers.

(Por cierto, adivinen qué famoso sistema operativo propietario para servidores no tiene soporte de ARM ni piensa añadirlo)

Han hecho un documento con los detalles de la nueva arquitectura que merece la pena comentar. Recordemos que cuando AMD creó x86-64 el número de registros de propósito general aumentó de los ridículos 8...¡a 16! (los procesador RISC de los 90 ya solían tener 32). ARM sigue sin ser x86, y eso quiere decir que son algo menos chapuceros, así que ya que han creado un nuevo conjunto de instrucciones, han decidido incrementar el número de registros de propósito general a 31 (antes tenía un número parecido pero sólo se podían acceder a 15 al mismo tiempo). Respecto a SIMD, tendrá 32 registros de 128 bits (SSE4 sólo tiene 16; aunque todo sea dicho, en AVX se han ampliado a 256 bits).

Y no es que tener más registros les haga más veloces, pero un servidor recuerda haber leído algún documento que tras un análisis concluía que en en plataformas x86-32, con sus ridículos 8 registros de propósito general, el código se pasaba un 20% del tiempo reubicando datos de registros a un lado y a otro para hacer sitio. Seguramente ARM no llegue a utilizar los 31 registros la mayor parte del tiempo, pero es una de esas cosas que nunca está de más tener, por si a algún compilador le da por sentirse inspirado.

En fin, habrá que ver como evoluciona ARM, a ver si de verdad consigue arrodillar Intel, o es Intel el que consigue expandir x86 a otro sector.

7 comentarios:

  1. Al parecer ARM va a conseguir lo que no ha logrado AMD en todos estos años. Y solo les hizo falta cambiar una letra del nombre :)

    ResponderEliminar
  2. 3 comentarios la misma semana? ¿quién eres tu y que has hecho con Diego? ;-)

    ResponderEliminar
  3. Cierto, no suelo hacer tantos...

    ResponderEliminar
  4. Anónimo1:35 p. m.

    a lo que yo añadiria... ¿y que órdenes traes? :-D

    ResponderEliminar
  5. Anónimo2:15 p. m.

    "por si a algún compilador le da por sentirse inspirado."
    compiladores insperados... eso seria algo interesante de ver

    ResponderEliminar
  6. El v8 dicen que saldrá en el 2014, y estoy esperando a ver que tal lleva lo de la virtualización sobre todo la de VGA passthrought de Xen.

    Me encantaría que en potencia - aunque fues montando varios - y en precio/prestaciones barriese a los Intel/Amd x32/x64. Además de en consumo energético en el que son unos hachas.

    De momento ATOM es más potente y es de la gama baja de Intel, pronto con competencia de AMD, pero aún consumen mucho más que los ARM.

    A ver si en el 2014 los ARM triunfan en escritorios y servidores, sería genial que al final los RISC se impusiesen a los CISC en esta carrera rara donde paradógicamente los nix Android con núcleo Linux e IOS con núcleo FreeBSD han financiado el fin del reinado de los CISC x86, menos eficientes, pero condicionados por el núcleo de MS WOS.

    A ver si vemos como MS WOS migra a un núcleo nix - como en su día hizo Apple - por fin, sería el mejor antivirus.

    ResponderEliminar
  7. Anónimo12:19 a. m.

    Si no mal entiendo, esos 31 registros serán 32 en realidad contando que el último registro será el del sistema (accesible, pero no para variables).

    ResponderEliminar