En días pasados (el 4 de Agosto) Intel hizo públicos algunos detalles sobre su tecnología Larrabee, de seguro con miras a los eventos que pronto servirán para presentarlo de manera formal y revelar todavía más información (como el SIGGRAPH --12/Agosto-- y el Intel Developers Forum --19-21/Agosto--). ExtremeTech(com), al igual que PC Perspective entre otros sitios especializados, posee un artículo bastante completo sobre los detalles ofrecidos, la mayoría de ellos referidos al hardware y a algunas de sus características generales. El presente artículo toma como base la información técnica disponible sobre Larrabee para presentar una serie de conclusiones que se pueden inferir de la misma.
No obstante, antes de pasar a las conclusiones vale destacar a grosso modo los detalles recientemente presentados por Intel; según como lo describe Jason Cross, el autor del artículo de ExtremeTech(com). Lo esencial del caso es entender que la arquitectura de Larrabee combina tanto características de CPU como de GPU. Del primero mantiene la programabilidad y en cierto aspecto la manera en que se procesa instrucciones, al igual de como se trabaja con la memoria. Del segundo se presta el poseer un extenso número de cores (núcleos) y conjuntos de instrucciones propias --o en todo caso afines-- a la tarea de renderizar imágenes.
Quizá el detalle más importante es que los diferentes cores están basados en la arquitectura original de las Pentium, lo que los hace diminutos con la tecnología actual y les confiere la habilidad de trabajar con instrucciones x86, además de incluir un grupo todavía no especificado de instrucciones especiales, al igual que unidades para operación de vectores. Según la nota oficial por Intel Larrabee viene a suponer una arquitectura many-core en contraposición a la de sus CPU que son multi-core, una distinción que sólo incumbe al número de núcleos involucrados y por lo tanto al grado de paralelismo real posible por uno y otro.
La gran diferencia entre las arquitecturas actuales de ATI y Nvidia con Larrabee es que este último permite procesar instrucciones no-gráficas sin pasar por toda la secuencia requerida por una que si lo es. Este detalle más las instrucciones x86 le dan una buena ventaja en entornos especializados como el de High Performance Computing (HPC), donde lo importante es procesar lo más rápido posible, lo más posible, y usualmente requieren de programas especiales. El equipo de Intel comenta que esto también permite acelerar el rasterizado, más o menos siguiendo la misma lógica detrás el Unified Shader Model del DirectX 10, es decir, no viendo a toda aplicación como si trabajara igual más bien dándole, de la mejor forma posible, sólo lo que necesita.
Una de las grandes ideas introducidas en el DirectX 10 es el Modelo de Shader Unificado que permite a los desarrolladores de hardware crear un único componente shader para lidiar tanto con vertex como pixel shaders al igual que los nuevos geometric shaders. La lógica detrás de esto establece que no toda aplicación (en este caso videojuegos) opera de la misma forma, por lo que se puede dar un caso en que un juego trabaja mucho con pixel shaders pero no vertex, por lo que cuando el hardware posee ambos componentes shader como entidades separadas se posee lo que se conoce como wasted silicon (silicio perdido). El nuevo modelo permite que sin que importe cual shader es más utilizado por una aplicacion, a nivel hardware el uso del componente shader --ahora-- genérico está siempre al máximo y por ende no se pierde poder de procesamiento, ni espacio en el circuito o la microarquitectura.
Corolario directo de lo anterior es que permite generalizar los componentes shader en hardware de tal forma que pueden realizar tareas alternativas, o no directamente afines, al renderizado de gráficos. Detalle que Nvidia promociona con su lenguaje CUDA, y ATI con otros proyectos afines, en ambos casos orientados a ofrecer a la comunidad interesada en acceder al increíble poder de procesamiento bruto de sus GPUs para trabajos no relacionados con el renderizado. Aquí entran en escena el HPC y el stream computing, por ejemplo el proyecto Folding@Home.
Una eficiencia en el uso de los recursos (memoria, cache, instrucciones) y el poder de procesamiento permite que la tecnología de Intel escale de forma ideal, es decir que su incremento en rendimiento es proporcional al número de cores presentes. Lo que se pinta muy atractivo más allá de lo obvio que es ofrecer tarjetas con un número creciente de núcleos, como sería el caso en configuraciones multi-Larrabee. Considerando que no hay nada sobre un sistema equivalente a CrossFire o SLI es muy probable que Intel decida más bien trabajar con el recientemente analizado Hydra Engine, proyecto del cual por cierto es participante como inversionista. De ser así podrían enfocarse en su GPU (para generalizar) y dejar los otros detalles a terceros, en este caso LucidLogic Technologies.
El que la arquitectura Larrabee posee el beneficio de escalar de manera lineal sin llegar al punto en que el incremento en rendimiento empieza a reducirse es de por si una ventaja ante el caso de las arquitecturas de ATI o Nvidia, quienes duplican y hasta casi triplican el número de cores en sus más recientes productos pero no por ello su rendimiento es proporcional. Incluso se nota el extraño efecto de que en configuraciones multi-GPU --en testeos de la vida real-- el rendimiento de dos o más es apenas mayor al de una sola. Un problema que en principio el Hydra Engine viene a solucionar para todos, pero que podría probar trabajar mucho mejor o ser más efectivo con el producto de Intel. El futuro lo dirá.
Otro detalle importante es que todo el conjunto de operaciones y funciones necesarios para ejecutar un engine gráfico moderno, y por ende ser compatible con el más reciente DirectX y OpenGL, se encuentra hecho a nivel software en su totalidad, o en gran parte (según los artículos sobre el tema lo único en hardware relacionado al renderizado son las unidades de textura). Esto en contraposición a lo ofrecido por la competencia donde ciertos procesos están, por decirlo así, precodificados en hardware para acelerar el trabajo. Al menos en teoría esta característica permitiría a Larrabee trabajar con una nueva versión de cualquier API gráfico sólo con una actualización de su controlador, no una nueva tarjeta.
Por ejemplo, si Intel lanza productos basados en Larrabee antes de que salga el DirectX 11 y estos operan dentro lo esperado tanto por usuarios como desarrolladores (en otras palabras, se venden), llegado el momento sólo habría que actualizar el controlador de la tarjeta del equipo azul para volverla compatible y ejecutar cualquier aplicación que lo aprovecha sin requerir nuevo hardware. A menos, claro está, que se incluya funciones u otros demasiado extraños para trabajarlos en software sin reducir rendimiento a nivel hardware; lo que es muy poco probable.
La aparente elevada programabilidad que posee el Larrabee lo presenta como un contrincante muy fuerte tanto para ATI como Nvidia, más aún en un punto en que los engines gráficos buscan caminos alternativos de evolución y no sólo mayor resolución y más detalle. Ejemplos abundan, Inteligencia Artificial mejorada, sistemas de física (no olvidar que Havok es ahora de Intel, y Microsoft Game Studios ha obtenido licencia "perpetua"), simulación de entorno o A-Life, en fin. Como para programar basta utilizar C++ o C en el modo nativo de Larrabee, el potencial está ahí al alcance de todos para encontrar soluciones y algoritmos que trabajen mucho mejor y sepan aprovechar de la naturaleza paralela en extremo de este hardware.
El anterior detalle también puede verse como una muy inteligente estrategia --a futuro-- de Intel en lo que respecta a su apoyo al desarrollo de software. Para que la industria del software evolucione, o avance, una vez más a la par del hardware se requiere algoritmos, conceptos e ideas que puedan trabajar con configuraciones multi-core y many-core sin que importe el número de núcleos pero aprovechando al máximo de los recursos y poder de procesamiento disponible. Hoy en día el avance en entornos multi-core es lento, tedioso y muy especializado. En un futuro inmediato todo CPU será many-core ya no multi-core. El nivel de programabilidad --compatible con x86-- de Larrabee puede también actuar como una plataforma de testeo y prueba para todos quienes investigan desarrollo de software escalable e independiente del número de cores en miras a un futuro inevitablemente many-core.
De momento los detalles que faltan es ver al hardware en acción y poder compararlo en situaciones de uso en el mundo real (i.e. videojuegos) con los productos de la competencia. Tampoco hay que olvidar que tanto ATI como Nvidia habrán tenido la oportunidad de pensar en mejoras para una nueva generación antes de que Intel saque un primer producto comercial basado en Larrabee, por lo que el campo de acción podría cambiar bastante. Al final lo que hay que tener en cuenta es que Intel no está ofreciendo nada extremadamente moderno o nuevo, lo que está haciendo es ofrecer un producto que se adapta mejor a las necesidades de los usuarios, y programadores, en cuanto a un mayor aprovechamiento del poder de procesamiento de un GPU, de tal manera que se convierte en uno de computo general no sólo rasterizado (un GPGPU). Más allá de sus retoques e ideas a nivel arquitectura, el mayor factor a favor podría ser su compatibilidad con el conjunto de instrucciones x86 y por lo tanto una elevada programabilidad de facto.
En un artículo anterior títulado El Dilema de Intel & AMD, exprese como hay serios problemas a nivel software para en un futuro inmediato poder aprovechar tecnologías multi-core al límite (más de 8-16 cores). Todavía no se ha encontrado aquel algoritmo, concepto o pequeña gran idea que revolucione la forma en que se diseña, programa e implementa aplicaciones para que sean capaces de aprovechar sin retoques de un número de núcleos de procesamiento siempre en crecimiento. A mi parecer, y si las cosas funcionan como se espera o supone, la arquitectura Larrabee podría actuar como una muleta (un soporte, un empujón, un apoyo si se quiere) entre el hardware y el software hasta que se descubra soluciones alternativas o aquel elusivo algoritmo, concepto o idea que permita aprovechar de manera progresiva de un cada vez mayor número de cores. Aunque no con estas palabras el documento oficial de Intel presenta una idea equivalente respecto a los beneficios/usos de su nueva microarquitectura.
Lo del párrafo anterior viene respaldado por dos hechos: (1) Larrabee ofrece elevada programabilidad que podría requerir de apoyo del CPU para optimizar las instrucciones de tal manera que no exista tiempo ocioso (quizá hasta compilado/interpretación en tiempo real). (2) Para trabajar con mayor efectividad, y velocidad, Larrabee utiliza mecanismos de optimización y simplificación de las instrucciones a procesar, de tal manera que recibe threads y las descompone en fibers y strands para paralelizar más, pero también para mantener a sus cores ocupados todo el tiempo; este proceso de corte o subdivisión sería por software y por ende utilizaría (necesitaría) al CPU.
Como se dibujan las cosas se puede llegar a una conclusión bastante interesante --aunque algo mercantilista--, que de seguro se verá probada o refutada en su momento cuando se sepa más sobre la nueva arquitectura GPU de Intel. Antes permítanme decir que llamar a la arquitectura Larrabee un GPU me parece que es inexacto, por lo que a falta de un mejor nombre podría considerársele uno de los primeros GPGPU verdaderos, pero es discutible, en fin. La conclusión es que habría una relación sutil entre el CPU y Larrabee, de tal manera que quizá incluso, y bajo ciertas condiciones, trabaje mejor cuando se posee cuatro o más cores, lo que si nada más será un buen motivo para que muchos den el salto definitivo a entornos quad-core (tal vez de ahí nacen las recientes reducciones de precio, una visión a futuro). Pronto lo sabremos.
Referencias