La patente del dispositivo suplementario de Nintendo

Desde hace unas horas una patente de Nintendo esta llevando a mucha gente de cabeza y me habéis pedido varias personas que la comente. Me la he estado leyendo en diagonal y teniendo en cuenta posibilidades e imposibilidades técnicas descritas en dicha patente. La patente la podéis encontrar aquí, pero de todos los diagramas hay uno que me ha llamado la atención enormemente la atención.

shari

Es decir, tenemos un elemento llamado “Dispositivo de computación suplementario” conectado a una consola de videojuegos que no solo puede suplir su potencia a la consola principal sino a otros dispositivos. Esto aunque os parezca una enorme novedad es algo que no tiene nada de nuevo en cuando a concepto, se llama computación distribuida.

Un sistema distribuido se define como: una colección de computadoras separadas físicamente y conectadas entre sí por una red de comunicaciones distribuida; cada máquina posee sus componentes de hardware y software que el usuario percibe como un solo sistema (no necesita saber qué cosas están en qué máquinas).

¿Cuál es la gracia? Que la computación distribuida fue propuesta en 2003 en relación a la que por aquel entonces era una futura consola de videojuegos, por lo que no es algo que venga nuevo, el problema es que nunca se materializo en algo concreto en el mercado.

Veamos… ¿Os acordáis del CBEA en su concepto original? Si, la CPU de PS3 pero el concepto original no el que termino en la consola, pues bien… Hagamos memoria de lo que en el 2003 le dijo Kutaragi al prestigioso periodista tecnológico Hiroshige Goto:

El concepto del Cell Computing en si mismo no es algo que resulte difícil de explicar, Ken Kutaragi lo explica de la siguiente manera: “Pese a que la vieja red es una red de información, se convertirá muy pronto en una red de comunicación punto apunto. El procesamiento de paquetes a tiempo real no se puede aplicar en la presente computación en cuadricula. El concepto de la computación en cuadricula realizada a tiempo real, es el concepto del Cell Computing.

¿Que es la computación en cuadricula? A menudo se confunde con la computación en la nube, dado que ambas usan la red, pero son distintas.

El principio de toda aplicación es que tiene dos sistemas, uno es el sistema interno que es como procesa la información y el otro es el sistema externo que es como se comunica el sistema con el usuario y el usuario con el sistema. ¿Un ejemplo de ello? OnLive por ejemplo era “Cloud Computing”, el dispositivo que distribuían a la gente se encargaba de recoger los datos que nosotros damos pulsando los controles como entrada y como salida reproduce el juego, el cual no es más que un video que vamos recibiendo a través de la red dado que la computación ha sido realizada desde un ordenador externo, otro ejemplo más claro de Cloud Computing es WordPress, cuando estoy escribiendo una entrada me aparece un editor de textos que es la interfaz con la que puedo interactuar pero el procesamiento de la información que no tiene que ver con la interfaz no se hace desde el ordenador cliente. Pero como he dicho antes, se ha llegado al punto en que llamamos computación en la nube a todo aquello que supone el uso de una red a gran escala a través de internet.

El otro concepto es el de “computación en cuadricula/Grid Computing”, al igual que la computación en la nube se basa en una red descentralizada pero con una diferencia esencial, en este caso cada uno de los componentes de la red dejan parte de su potencia independientemente de donde se encuentren los recursos para alcanzar un objetivo común, en este caso no es solo el procesamiento de la interfaz de lo que se encarga el sistema cliente sino que el sistema cliente también forma parte de la computación pesada. La idea que tenían en SCEI y que bautizaron como “Cell Computing” no era otra cosa que computación en cuadricula a tiempo real.

La idea del Grid Computing es que cada uno de los dispositivos que forman parte de la de la red cedan parte de su potencia para procesar los paquetes que les van llegando, si tienes una red muy amplia de dispositivos puedes dividir los paquetes a procesar en tamaños muy pequeños que se procesen en poco tiempo.

Pero volvamos al concepto de Kuraragi de nuevo, en primer lugar, él tenia planes para que Sony entera adoptase este sistema a todos los niveles.

OLYMPUS DIGITAL CAMERA

Y que se aplicase en la mayor cantidad de dispositivos posibles.

 

Al final Sony acabo descartando la idea de Kutagi, el motivo esta explicado en el libro Sony vs Samsung.

Kutaragi sin embargo tenía una visión diferente de lo que el Cell podría ser. Una vez que tomo el poder (como CTO de Sony Corp.), Kutaragi forzo al sector de la electrónica de consumo a adoptar el estilo de administración de la división de videojuegos. Había gastado 500 billones de yenes en el desarrollo del Cell y quería recuperar el coste. Forzó al resto de las divisiones a usar el Cell pese a que estas consideraban que el Cell era demasiado poderoso, demasiado caro y emitía demasiado calor para los productos de electrónica de consumo.

Obviamente si existen diferentes sistemas compartiendo potencia de forma remota se tienen que entender de una manera o de otra. Vayamos a lo que dice la patente original del CBEA porque es clave en esto.

De acuerdo con la presente invención, todos los miembros de la red de ordenadores, todos los ordenadores y dispositivos de computación en la red, están construidos desde un módulo de computación común. Este modelo de computación común tiene una estructura consistente y preferentemente utiliza la misma ISA. Los miembros de la red pueden ser por ejemplo clientes, servidores, PCs, sistemas de videojuegos, PDAs, set top boxes, televisores digitales y cualquier otro dispositivo que utilice procesadores de ordenador. La consistente estructura modular permite un procesamiento eficiente y de alta velocidad entre los miembros de la red y una rápida transmisión de aplicaciones y datos a través de la red. Esta estructura también simplifica la construcción de miembros de la red de distintos tamaños y de poder de procesamiento y la preparación de aplicaciones para el procesamiento por parte de dichos miembros.

En otro aspecto, la presente invención provee un nuevo modelo de programación para transmitir datos y aplicaciones a través de una red y para el procesamiento de datos y aplicaciones entre los miembros de la red. Este modelo de programación emplea una célula de software que es transmitida a través de la red para ser procesada por cualquiera de los miembros de la red. Cada célula de software tiene la misma estructura y puede obtener tanto aplicaciones como datos. como resultado de la alta velocidad de procesamiento y la alta velocidad de procesamiento proveída por la arquitectura de ordenador modular. Cada célula de software puede ser procesada rapidamente. El código de las instrucciones preferentemente se basa en un mismo set de instrucciones e ISA.

¿Como enlazamos esto con el presente? Pues a través del concepto del Procesador de Caudal/Stream Processor, un concepto que comparten el CBEA y las GPUs. En el CBEA los llamados SPE no tenían acceso a la memoria principal del sistema sino que recibían unos datos y un programa en su memoria local, los procesaban y devolvían un resultado. Este concepto es el mismo que los Stream Processors utilizados para las llamadas unidades shaders de la GPU. Tanto las GPU como los procesadores de arquitectura Cell se basan en el concepto del Stream Processing, se llama así por el Imagine Stream Processor creado por la Universidad de Stanford, de cuyo concepto se nutren estos procesadores para su diseño. Las definiciones son:

  • Stream: colección de datos ordenados de un mismo tipo que pueden ser tanto simples (variables) como complejos (estructuras de datos).
  • Kernel: Realizan una función sobre una colección de “Streams” determinada de entrada para generar uno o varios streams como salida.

En este modelo, las aplicaciones están construidas por varios “kernels” encadenados entre si, cada kernel tiene una función determinada y es en realidad un programa auto-contenido con sus datos. De esta manera los procesadores van recibiendo kernels/trabajos/celulas de computación y las van resolviendo una por una, el hecho que estos pequeños programas sean tan pequeños permite su distribución alrededor de un sistema, es por ello por ejemplo que las GPUs están compuestas pode centenares o miles de núcleos de procesamiento.

Hay un detalle en común adicional entre la patente del CBEA y la reciente patente de Nintendo.

Cada célula de software contiene una identificación global (Global ID) y la información describiendo la cantidad de recursos de computación para el procesamiento de la célula.

Entiendase la célula como el programa (datos+instrucciones) autocontenido y enviado para ser procesado. Pues bien, en la patente de Nintendo podemos encontrar lo siguiente respecto a este tema:

En estas instancia, un dispositivo de computación suplementaria puede transmitir su identificación de servicio (SSID) o puede hacer su presencia conocida a otras consolas de videojuegos remotas. El dispositivo de computación suplementario puede transmitir su SSID directamente o a través de su consola local. En cualquier instancia, los juegos remotos pueden identificar el SSID transmitido, reconocer el dispositivo como un dispositivo suplementario de computación disponible para utilizar y puede determinar la fuerza de la conexión entre si mismo y la dispositivo de computación suplementario (o la latencia entre ambos).

Como veis se trata del mismo concepto, una vez explicado el concepto general vayamos a lo que es el hardware principal compuesto por consola+dispositivo de computación suplementario a nivel más local porque por lo que parece el nivel de apoyo depende de la distancia y la forma en la que se encuentre la consola y el dispositivo de computación suplementaría.

FIG2

Vayamos a las descripciones:

El dispositivo suplementario 104 puede estar físicamente conectado a través de un cable, mientras que en otras instancias puede ser conectado a la consola de forma inalámbrica.

La potencia que puede dar el dispositivo computación suplementario de forma inalámbrica es menor que la que puede dar un dispositivo conectado por cable por la menor latencia y el mayor ancho de banda, la misma patente clarifica y ya lo hemos visto antes, aunque en el siguiente párrafo lo explican más detenidamente:

En instancias en la que la consola de videojuego utiliza los recursos desde un dispositivo remoto de computación, la consola de videojuegos se puede emparejar al dispositivo de computación suplementario que este relativamente “cerca” dentro de una red. Esto es que la consola de videojuegos 102 o el emparejado dispositivo de computación suplementario 104 pueden detectar otros dispositivos de computación suplementario cuyos puntos finales de comunicación se encuentren a menos distancia que el umbral de latencia de una red. A través de emparejar estos dispositivos, las técnicas aquí descritas limitan la latencia entre dispositivos. Los otros sistemas de computación suplementarios pueden estar en una distancia relativamente corta (por ejemplo en la misma casa, construcción o vecindario) o pueden estar en alguna distancia más lejana. En algunas encarnaciones, la distancia de la red puede afectar los tipos de funcionalidad que los dispositivos de computación suplementarios pueden proveer.

¿Cuáles son estas funcionalidades?

La distancia en la red se puede medir por latencia entre la consola de videojuegos y el/los respectivo/os dispositivos de computación suplementaría y/o la estimación actual de hops de red entre la consola y dicho/s dispositivos. En términos de la distancia de red un dispositivo cercano tiene pocos “hops” y puede ser utilizado para proveer servicios a casi tiempo real (por ejemplo el procesamiento de gráficos a tiempo real y los efectos de sonido), mientras que los dispositivos que están relativamente más lejos pueden ser utilizados para proveer apoyo asíncrono o suplementario a los eventos ocurridos en la consola (por ejemplo: climatología de los juegos, inteligencia artificial, etc.).

Para que el dispositivo de computación suplementaría pueda trabajar en tiempo real no se puede permitir el uso de una red inalámbrica y tampoco se puede permitir el uso de métodos de conexión convencionales porque estamos hablando de anchos de banda de comunicación entre ambos dispositivos bastante grandes. Es decir, la aplicación cambia según la distancia en la que se encuentre el dispositivo de apoyo, aunque lo que realmente me interesa es el tema del dispositivo de apoyo como potencia adicional para el renderizado de los gráficos a tiempo real, por lo que por el momento me centrare solo en dicho escenario por el momento, el otro ya ha quedado explicado de sobras.

¿Pero que hay dentro de la consola y su amigo? Empezando por la consola.

Cada procesador 202 puede estar compuesto por uno o más procesadores o núcleos de procesamiento. Por ejemplo, el procesador 202 puede ser implementado como uno o más microprocesadores, microcomputadores, microcontroladores, unidades de procesamiento gráfico, procesadores se señal digital, unidades centrales de proceso, máquinas de estado, circuitos lógicos…

En lenguaje vulgar… El procesador 202 es un SoC que incluye en su interior todos estos elementos, en cuanto a la memoria del sistema…

El procesador 202 puede ser configurado para captar y ejecutar instrucciones leíbles y ejecutables que se encuentren almacenadas en la memoria 204.

Veamos ahora el dispositivo suplementario:

El dispositivo suplementario 104, mientras tanto, incluye uno o más procesadores 218, memoria 220 y una o más interfaces de comunicación 222. En algunas instancias, la funcionalidad del dispositivo 104 puede ser básica para mantener el coste del dispositivo 104 relativamente bajo. Como tal, el dispositivo 104 puede estar libre de controladores, tarjetas de video, interfaces de control de usuario, y similares.

Pero… Si no tiene una GPU… ¿Como puede ayudar en el renderizado de la escena a tiempo real? Hay que entender que estamos hablando de un dispositivo cuya única conectividad externa es con la consola principal, por lo que lo más seguro actúe como un periférico de este y en modo maestro-esclavo recibiendo una lista de cosas a realizar para dar una respuesta, es decir… dicho dispositivo funcionaría como una GPU o como los SPE del CBEA, elementos que ejecutarían programas muy pequeños rápidamente y devolverían el resultado a continuación. Elementos que tendrían un procesador de comandos procesando la lista de tareas enviada no solo por la CPU de la consola principal en memoria y no solo de la CPU principal sino también por parte de otros dispositivos, algo que se ve también en la patente.

En algunas instancias, las interfaces 222 pueden incluir una interfaz de comunicación física para conectar con lasa consola de videojuegos local 102 y una interfaz de comunicación inalámbrica para conectar con una o más consolas de videojuegos remotas.

El dispositivo suplementario lo que hace es otorgar potencial adicional y esta puede ser dada para la consola a la que esta conectada o a una serie de consolas conectadas a la red local de forma inalámbrica, supongo que en este último caso se referirá a una serie de consolas portátiles dentro de la misma red y en esas condiciones es dispositivo remoto y no cercano por lo que la ayuda no puede ser a nivel de renderizado de la escena en esos casos. ¿Entonces que tipo de ayuda? Si hay algo a lo que han avanzado las GPUs actuales es la de poder aportar parte de su potencia al apoyo de tareas de computación general de forma no sincronizada y por tanto independiente de los gráficos.

¿Por qué hablo de una GPU? Pues por el hecho que lo que más se parece al concepto original del CBEA (al que copia descaradamente la patente) es un SoC que incluye CPÙ+GPU donde la GPU hace el trabajo que hacían los SPE y es ideal para dicho modelo, es decir… El procesador de apoyo sería una GPU suplementaría con su memoria. Pero no tendría salida de video sino que actuaría como una configuración de doble GPU como las que hay en PC con el añadido de lo que hemos contado.

Ahora bien, nos encontramos con un problema que es el ancho de banda de comunicación, en PC podemos conectar una APU con una GPU fuera del chip del mismo tipo pero lo hace a través de una interfaz PCI Express dentro del mismo ordenador, en este caso estamos hablando de una interfaz externa en la que conectar dicho dispositivo. Es decir, se necesita un conector PCI Express externo o algún otro que de el ancho de banda suficiente como para poder realizar la transmisión de datos sin problemas entre ambos dispositivos a la hora de apoyar en el renderizado a tiempo real de la escena sin que resulte un cuello de botella.

¿Existe alguna tecnología de este tipo? Hace unos años AMD presento un tipo de puerto para tarjetas externas llamado XGP, la cosa no tuvo mucho éxito por el hecho que quien quiere sacrificar potencia por portabilidad no va a colocar una GPU externa. Es decir, no había mercado para dicha solución. ¿Y en que consistía? De un puerto externo en los portátiles para conectar una GPU externa.

amilo_xgp_port-4f

Dicho puerto era compatible con el PCI Express 2.0 y podía transmitir usando una configuración de x16, es decir… con un ancho de banda de 16GB/seg como máximo. El hecho de añadir una doble GPU con su memoria permite una serie de configuraciones concretas en el sistema como por ejemplo:

  1. La GPU principal puede renderizar los fotogramas pares y la suplementaria los impares o viceversa.
  2. La CPU puede utilizar tanto la GPU principal como la secundaria para tareas de computación.
  3. Una GPU puede renderizar un fotograma y la otra aplicar los efectos de post-procesado.

En fin, más de esta patente a nivel de especulación no puedo sacar, lo que me sorprende es ver esta patente por parte de Nintendo. Los add-on no son muy populares que digamos pero tiene sentido si hablamos de una consola a media generación y de coste menor al resto, es decir… Nintendo puede no planterse el salto a una siguiente generación respecto a NX sino lanzar este dispositivo para los usuarios que ya tendrían la NX. Esto es lo mismo que la 3DO Company se planteo de cara a la 3DO M2 donde se plantearon el lanzamiento de un módulo de expansión que al final no se materializo.

SAD2Rxk

Aunque más bien pienso que el dispositivo de computación suplementaria esta para reducir el coste de la consola principal y sacarle el dinero al juascor gamer que quiera pagar por gráficos adicionales.

Esto es todo.

Anuncios