Probando Windows 10 estábamos hace unos días cuando una pregunta se nos vino a la cabeza y desde entonces no conseguimos liberarnos de ella ni darle respuesta. Ante la duda decidimos preguntar directamente a Microsoft, y evidentemente no obtuvimos respuesta a nuestra cuestión, pero las reacciones de algunos contactos haciendo como si la pregunta quemara nos han hecho tener más ganas aun de conocer la respuesta.
Antes de plantear la pregunta para que todos entendáis que es lo que estamos proponiendo vamos aponernos en situación.
Microsoft ha anunciado ya públicamente desde hace un tiempo que su futuro está en la convergencia de plataformas. Buscando unificar el kernel del Software con independencia de que Hardware la soporte. Una de las mayores muestras de esta política es la aparición de Windows 10. Esta nueva versión de Windows se adaptara al hardware sobre el que esté instalado y mostrara unas cosas u otras. Este es un paso impresionante ya que permitirá a los programadores hacer una aplicación para un solo software y estar presente en múltiples dispositivos con unos retoques menores, y por otra parte permitirá a cualquier plataforma aprovecharse de la potencia de Windows en todo su conjunto adaptando su interface para mejorar la experiencia de usuario según el hardware usado para la visualización y los dispositivos de interacción disponibles.
Claro, todo esto suena muy bien, y a priori parece que todo se reduce a modificar el interface dependiendo del Hardware que lo soporte, pero tienen muchísima más complejidad de la que parece, y esta complejidad se incremente exponencialmente cuando se trata de una compañía que está metida en tantísimos campos y con tantos servicios en el mercado.
Además no solo hay que contar con las áreas que actualmente están operativas y funcionales, si no que también hay que tener en mente las futuras necesidades como puede ser el tan de moda concepto de El internet de las Cosas o IoT por sus siglas en inglés (Internet of Things) que resumido de una manera muy pero que muy simple es que cualquier cosa cotidiana puede terminar conectada a internet. Ya lo estamos viendo con los Televisores, los electrodomésticos, los relojes, y mil cosas más que acabaran estando gestionadas por un Software y conectadas a internet. Esto implica un abanico amplísimo de hardwares futuros que necesitaran llevar un software que los gestione.
Llegado este punto vamos acercándonos a la pregunta en cuestión, solo queda una pequeña aclaración más.
Para entender la duda que planteamos ha vamos resumir a un nivel ultra simplista dos divisiones de arquitectura hardware. Actualmente hay dos arquitecturas que están dominando el mercado, x86 en 64 Bits (en adelante x64) y ARM que también lo hay de 64bits pero llamaremos solo ARM.
Los x64 encabezaros por Intel con sus i3, i5 e i7 (dejemos los Xeon aparte) son procesadores pensados para ofrecer potencia de cálculo a costa de un mayor consumo energético y una mayor generación de calor. También son mucho más caros
Los ARM encabezados actualmente por Qualcomm y sus Snapdragon, están pensados para dispositivos móviles, ofreciendo un menos consumo energético y menor generación de calor. Son mucho más baratos, pero ofrecen una potencia de cálculo ciertamente menor que los x64.
Actualmente móviles y dispositivos de menor tamaño (wareables en general) optan por arquitectura ARM por las ventajas obvias que ofrecen a sus fines. Mientras los equipos portátiles y de sobremesa montan procesadores x64 tanto de Intel como de AMD por la necesidad de potencia de procesamiento que requieren.
Aquí viene uno de los puntos que tienen que quedar claros, y es que cada arquitectura ejecuta las “instrucciones” de una manera y lo que se ha programado para una no se puede usar en la otra. Los sistemas operativos no son excepción por lo que hay que hacer uno diferente para cada arquitectura. No se puede instalar el Windows normal (x64) en un dispositivo ARM.
Los tablets están algo divididos en el caso de Windows. Y son un buen ejemplo para explicar lo que vamos a plantear.
Con la aparición de Surface Microsoft sorprendió creando el primer Windows que funcionaba sobre ARM y era el Windows RT. El lio que se generó con la versión RT y la normal de Windows es lo que nos lleva a escribir todo este prologo antes de exponer la duda.
Se creó un Windows RT por que se quería competir con el iPad y los tablets Android, unos equipos creados para el consumo de contenidos y orientados 100% al ocio. Estos equipos no requerían de mucha potencia, pero sí de autonomía, ligereza y refrigeración para mantener la temperatura. Estas necesidades las cubre un procesador ARM.
Por otro lado se crearon los Surface PRO con la versión normal de Windows Profesional para competir con los ultra portátiles o en el caso de Surface 3 con cualquier portátil. Esto requiere potencia de cálculo y se utilizan procesadores x64.
Todo esto resumido lo que nos está diciendo es que cada arquitectura de hardware requiere un software específico. Empezando por la versión del sistema operativo, siguiendo por el software que se puede instalar en ese sistema y terminando por la tienda de aplicaciones que soporta ese sistema operativo.
Ahora que tenemos unos conceptos muy claros y que son:
- Dos arquitecturas Hardware diferentes
- Cada Hardware requiere un OS especifico
- Cada OS puede ejecutar unos programas diferentes
- Cada OS tiene una tienda de aplicaciones distinta
Pongamos la pregunta en la mesa.
Dejemos claro que en esta disyuntiva que se nos presenta vamos a obviar de entrada toda la parte corporativa como son las versiones Server de Windows, o las ediciones embedded. Porque creemos que esta es una parte que convergerá con el resto pero a un ritmo particular.
¿Qué piensa hacer Microsoft con los dispositivos que usan procesadores ARM?
El mayor representante de estos equipos son los SmartPhones, y por eso la primera referencia que hacemos en a Windows Phone.
¿Piensa Microsoft que todo terminara siendo x64 y solo mantendrá un Kernel (es el núcleo del sistema operativo) para todos los dispositivos Hardware del mercado, o aparecerá una versión de Windows para arquitectura ARM?
Cualquiera de las dos opciones es compleja, muy compleja.
Opción 1. Cambiar el Hardware.
Empecemos por las tablets. En este área no tendría mayores problemas, actualmente la línea Surface ya solo tiene continuidad en la versión 3 con soporte x64. Y el resto de fabricantes nunca apoyaron demasiado la versión RT y casi el 100% de tablets Windows salían con procesadores x64.
Los Smartphones, es aquí donde llega el mayor problema. Por un lado tenemos la gama Lumia que es propiedad de Microsoft. En estos equipos se podría sustituir la arquitectura por otros procesadores de bajo coste compatibles x64 (Intel Atom) pero ahora que cada vez entran más fabricantes a Windows Phone y principalmente con equipos de bajo coste, implicaría convencer a estos fabricantes de cambiar su tecnología. Algo que se antoja complicado.
Los wareables, estos son los dispositivos que más problemas pueden tener, dada su condición de móviles y pequeños en su amplia mayoría, se hace difícil a día de hoy el cambio de arquitectura hardware. Ahora bien, que no deja de sr un área en expansión que como quien dice acaba de nacer y con el tiempo puede cambiar. Pero a día de hoy lo vemos difícil.
En conclusión, la opción de cambiar el hardware implica convencer a los fabricantes de los productos finales de cambiar de tecnología y lo vemos complicado.
Opción 2. Crear una versión de Windows para ARM
Lógicamente esto parece lo más fácil siendo Microsoft el creador del Windows. Pero hacer una segunda versión de Windows tiraría por tierra todo el concepto de convergencia y nos devolvería a 2 líneas de Windows cada una con sus Software soportado y su tienda de aplicaciones. Y como ya vimos en la presentación de Windows 10, se da por hecho, que un solo sistema operativo para todas las plataformas. Por lo que no creemos que sea esta la salida.
Como podéis ver, hay un problema real sobre la mesa que requiere una solución. Y ninguna de las dos opción es que vemos son muy recomendables.
¿Estamos entonces ante una de esas situaciones en las que la decisión no es buena, si no que se opta por la menos mala? O ¿hay una tercera opción?
Opción 3. Nuevo paradigma de la virtualizacion
Si nos basamos en una filosofía de arquitectura tradicional, las únicas opciones que encontramos son las dos primeras. Pero si abrimos nuestras mentes a nuevas soluciones y sobretodo instalamos en nuestras mentes el concepto de abstracción y lo continuamos con el de virtualización quizás encontremos una tercera vía.
A estas alturas alguno estará pensando que no hemos ni nombrado una de las áreas más representativa ultimarte en casa de los de Redmond y más apareciendo en el título. Bueno, pues no lo hemos hecho porque precisamente dentro de la Xbox ONE esta quizás la respuesta a este callejón sin salida. Xbox ONE esconde en su interior muchísimo más de lo que parece a simple vista y su arquitectura está pensada para trabajar con una filosofía de hardware más cercana a los cluster de computación que a un hardware lúdico del hogar. Recomiendo encarecidamente la web elotroforo para entender mejor que es lo que esconde Xbox ONE.
La concepción de Xbox ONE y su arquitectura son un cluster virtualizado en pequeño que se conecta directamente con toda la mega infraestructura de Azure para terminar de completar el círculo. Mucha de esta tecnología esta heredada de los conocimientos de Microsoft del área empresarial y sobretodo de la parte de servicios cloud (Azure) de la que era líder hasta su ascenso Satya Nadella.
Sabemos que para entender lo que estamos proponiendo hay que asimilar primero que es la virtualización y lo que son los hypervisores y lo que es virtualizar todo el cómputo. Pero en teoría resumiendo y decimos en teoría porque en la realidad no hay ninguna solución que haga lo que queremos platear excepto las sospechas del verdadero funcionamiento de Xbox ONE. Lo que buscaría Microsoft es independientemente del Hardware usado, mediante el nuevo Windows y una capa que se instalaría directamente sobre el hardware, abstraer el hardware para poder ejecutar sobre esta capa hypervisor el kernel unificado de Windows y así poder ofrecer la misma experiencia en todos los dispositivos. No en vano, Windows 10 ya ofrece de manera nativa y muy sencilla escritorios virtuales. Lo que demuestra la fuerte orientación hacia esta nueva realidad de la informática.
Esta tercera vía, es solo y quede esto claro, una teoría nuestra basada en informaciones que vamos enlazando de uno y otro sitio, pero que poco o nada pueden representar la realidad de Windows.
Que hará Microsoft no lo sabemos, Opción 1, opción 2, opción 3 o incluso alguna opción que ni imaginemos. Lo que si podemos asegurar al 100% es que la solución ya la tienen y nos la anunciaran en breve.
Pfff, ver que recomiendas entrar a elotroforo ya hasta ahí dejé de leer. Credibilidad 0. xD
En el articulo se plante un problema de arquitecturas y software asociado. Y en elotroforo hay datos interesantes que ayudan a entender lo que queremos expresar en cuanto a la arquitectura de Xbox. Para entender lo que creemos puede ser una opción para Microsoft. De todos modos este articulo no pretende dar una verdad, si no plantear una realidad y un problema así como posibles soluciones. Luego cada uno que saque sus conclusiones.
Buen artículo Víctor, muy interesante y didáctico, como siempre.
Gracias por la referencia, la admiración es mutua, y ni caso a los haters.