Inicio Componentes Las guerras del núcleo. ¿Por qué es tan importante el núcleo? se...

Las guerras del núcleo. ¿Por qué es tan importante el núcleo? se pregunta Lucio di Jasio

La disponibilidad de procesos CMOS de geometría cada vez más reducida ha hecho que en los últimos años los fabricantes hayan promocionado la entrada de los microcontroladores de 32 bit en segmentos anteriormente dominados por la arquitectura de 8 bit. Alentados por las fuertes campañas elaboradas por ARM, algunos fabricantes de microcontroladores parecen haber dejado el mercado de 8 bit de su objetivo habiendo dedicado su catálogo completo a los productos de 32 bit. Este artículo analiza la razón de ser de estas elecciones y el verdadero impacto que esto tiene sobre la posibilidad de elección de los diseñadores de control embebido, haciendo la pregunta: “¿Cuál es la importancia del núcleo?”.

Aumento y disminución del número de puertas

El control embebido ha estado siempre unos pocos pasos por detrás de la industria informática convencional por una serie de razones. En primer lugar está la necesidad de controlar los costes, pero quizás los ingenieros de diseño embebido son más cautos y necesitan asegurarse de que los microcontroladores trabajan en aplicaciones más habituales en el mundo real. En este contexto se valoran más que en otros campos la fiabilidad y la robustez, que solo se pueden obtener con buenas prácticas de diseño y un profundo conocimiento del sistema.

Así, mientras el mundo de los semiconductores en general evoluciona hacia nuevas geometrías de 22 nm y más allá, la mayoría de los microcontroladores, como los incorporados en frigoríficos, lavavajillas o mandos a distancia de televisores, acaban de romper ahora la barrera de los 200 nm.

Este nivel de evolución coloca el control embebido en el punto en que la industria de sobremesa estaba hace más de una década: cuando las puertas lógicas empezaron a ser relativamente baratas respecto al coste de los encapsulados y las funciones analógicas en una pastilla de semiconductor determinada. Ya no parece absurdo, por ejemplo, plantear el uso de un núcleo de 32 bit para resolver un problema de parpadeo de un LED.

Facilidad de diseño

Todo esto está relacionado, por supuesto, con la facilidad de diseño. Dado que existe un creciente número de aplicaciones que utilizan microcontroladores para sustituir los sistemas electromecánicos por mecatrónica, se pide a más ingenieros que dominen el arte del diseño de firmware para control embebido. El firmware de microcontrolador es el núcleo de la inteligencia que se espera de los productos embebidos. A medida que hay más productos que necesitan firmware, su desarrollo también ha de ser más rápido dado que el “plazo de comercialización” es el parámetro clave con el que se miden prácticamente todos los proyectos.

Lenguajes de programación: ¿Cómo de alto?

La primera y más obvia ventaja que aporta el uso de procesos CMOS más reducidos es que hay mucha más memoria de programa Flash disponible para el objetivo de precio establecido. Esto se puede traducir en un desarrollo más rápido al relajarse las limitaciones de espacio, de forma que el diseñador puede concentrarse más fácilmente en los principales objetivos del proyecto. Se pueden utilizar potentes bibliotecas para estandarizar el desarrollo de la aplicación así como herramientas de prototipado rápido que pueden ayudar a generar código automáticamente a partir de plantillas.

Un aspecto fundamental para ello es la transición gradual del lenguaje Ensamblador al lenguaje C durante los últimos diez años.

Independencia del núcleo

El lenguaje C es un paso importante en la tendencia hacia la independencia del núcleo: si se utiliza adecuadamente, el lenguaje C puede hacer que resulte más sencillo leer, mantener y migrar el código de aplicación. Tiene el potencial de poner los diseños por encima de la nemónica y de detallar minuciosamente las arquitecturas propias de microcontrolador, así como reducir todas las arquitecturas de control embebido al mismo modelo abstracto basado en pila. La transición a C ha alejado la atención del diseño del núcleo.

Desde luego el núcleo sigue siendo importante porque ha de ser rápido y eficiente, pero ya no es una barrera para la migración. El lenguaje C ha permitido que el diseño embebido evolucione hacia una era de mayor independencia respecto al núcleo. El hecho de que un diseño se base en una arquitectura de 8, 16 o 32 bit puede ser irrelevante cuando se active un compilador de C con solo pulsar un botón.

División entre el diseño de hardware y software

Otra consecuencia positiva que tiene una amplia adopción de la programación en lenguaje C ha sido que el diseño de firmware embebido se ha acercado a la experiencia de la informática convencional. Cada vez hay más compañías que ven práctico separar el desarrollo de hardware y software. Esto se debe en parte al número relativamente grande de licenciados en informática, y también porque permite la evolución del desarrollo de hardware y software en paralelo para lograr un plazo de comercialización más rápido.

Los diseñadores de hardware aún deben estar muy cualificados y los ingenieros de software deben adquirir cierta experiencia en diseño embebido o existe el riesgo de que los sistemas resultantes sean elegantes pero ineficientes. Los sistemas eficientes utilizarán múltiples capas de bibliotecas de software para proporcionar funciones complejas como conectividad (USB, TCP/IP,…) y soporte al sistema de archivos con independencia del núcleo.

Los sistemas operativos en tiempo real (RTOS [[iii]]) pueden utilizarse para evitar que el diseño se convierta en una maraña imposible determinada por eventos y basada en interrupciones. Los RTOS más utilizados se adaptan a un gran número de arquitecturas, una vez eliminados los detalles del núcleo desde el punto de vista de los diseñadores y ofreciendo una ruta de migración limpia.

Finalmente, todas estas capas de software se encuentran con el hardware, donde lo que importa es la anchura y la profundidad de la plataforma del proveedor. La plataforma debe ofrecer el conjunto de opciones más amplio posible para proporcionar al equipo de diseño un potente conjunto de periféricos, memoria y paquetes compatibles.

Extraer la carga del núcleo

Parece que los esfuerzos de marketing de los fabricantes de microcontroladores se centran en las prestaciones expresadas en MIPS (millones de instrucciones por segundo) pese a que el número de MIPS de un microcontrolador puede significar relativamente poco para sus prestaciones en la aplicación real. Por ejemplo, a menudo se utilizan técnicas de emulación de software denominadas “bit banging” en control embebido, pero con un coste de muy elevado para las prestaciones. Por el contrario, el conjunto adecuado de periféricos puede reducir notablemente las prestaciones (MIPS) que necesita un proyecto. Visto de forma ideal, cuando se coloca la lógica adecuada y los módulos periféricos correctos y sus conexiones pueden configurarse de forma que se adapten perfectamente a la aplicación, el procesador puede se puede poner en modo de espera u otro modo de bajo consumo, dejando así el contador de MIPS de la aplicación sujeto a cero.

La continua innovación, junto con el perfeccionamiento y el ajuste del conjunto de periféricos, puede marcar una mayor diferencia que la elección del núcleo. Las modernas arquitecturas de 8 bit, por ejemplo, ofrecen bloques lógicos configurables y una granularidad fina en la arquitectura de los periféricos, así como una elevada conectividad interna [[iv]]. Esto permite que las modernas arquitecturas de 8 bit compitan fácilmente incluso con los procesadores más rápidos de 32 bit con un conjunto de periféricos menos flexible.

Más allá de la lógica

Si bien la evolución hacia geometrías más reducidas ha ayudado a proporcionar una mayor densidad de puertas lógicas, lo cual ha conducido a unos mayores tamaños de memoria, núcleos de mayor tamaño y pastillas de semiconductor más pequeñas, la electrónica analógica proporciona nuevos retos y exigentes compromisos. Éstos son los aspectos más relevantes:

          Integración analógica: a medida que disminuyen el tamaño de las puertas con la geometría de un proceso CMOS, condensadores y resistencias no reducen su tamaño a la misma velocidad. Se espera que los modernos microcontroladores de 8 bit integren amplificadores operacionales, amplificadores de instrumentación, convertidores A/D y D/A, comparadores, osciladores de precisión y referencias de tensión. Sin embargo, es más difícil integrar estos periféricos analógicos en geometrías más reducidas con el mismo nivel de precisión y prestaciones. Con la excepción de un par básico de A/D y D/A, muy pocos proveedores se han aventurado por esta vía.

          EEPROM de datos y duración de la memoria: Con una geometría más reducida se produce más efecto túnel [[v]]. Esto significa un menor número de ciclos de borrado/escritura y una menor retención de memoria, en ocasiones medida durante meses en lugar de las décadas que suelen ofrecer las geometrías de 8 bit de mayor tamaño. La emulación de EEPROM en Flash se ofrece como alternativa y expensas de grandes áreas de RAM, mayor complejidad y una sobrecarga de la CPU.

          Funcionamiento a 5V y más allá: los núcleos de geometría más reducida trabajan con tensiones internas muy bajas. La mayoría de proveedores pueden proporcionar una tolerancia de 5V en un subconjunto limitado de E/S pero muy pocos, si es que hay alguno, ha logrado ofrecer una verdadero funcionamiento a 5V en algo más que un puñado de patillas.

          Consumo extremadamente bajo: dado que los núcleos de geometría más reducida trabajan con unas tensiones internas muy bajas, como por ejemplo entre 0,9V y 1,2V, también necesitan conectarse a periféricos externos e interfaces que trabajen entre 2V y 3,3V. Esto da como resultado múltiples canales internos derivados de la Vdd del dispositivo utilizando los reguladores LDO integrados a expensas de la eficiencia energética. Para resolver este problema se han aplicado técnicas muy avanzadas de aislamiento y ramificación de la señal de reloj, pero hasta la fecha ninguno de los nuevos núcleos puede acercarse a más de un orden de magnitud al nivel de bajo consumo de las mejores arquitecturas de 8 bit.

Desde luego, el progreso es continuo y ha habido importantes avances en los últimos años y meses, y se espera mucho de la nueva generación de microcontroladores, especialmente en cuanto a densidad de código y prestaciones.

Toda aplicación que necesite una elevada potencia de cálculo podrá aprovechar el uso de una mayor arquitectura. El problema, sin embargo, reside en ampliar el razonamiento al punto en que se cree que toda aplicación saldría ganando con un núcleo común de 32 bit.

Coches frente a controladores

Desde muchos puntos de vista, la elección de microcontrolador es como comprar un coche: por supuesto, depende de nuestro gusto personal, pero también ha de estar razonablemente ligada al uso que se dé al vehículo. Para viajes frecuentes a largas distancias, la velocidad, el confort y las prestaciones serían son los principales objetivos y un coche de gran tamaño con un gran motor turbodiésel sería probablemente la mejor opción. Para una conducción urbana a distancias cortas y con plazas de aparcamiento reducidas, un coche compacto con un motor híbrido o eléctrico sería lo más aconsejable.

Diferentes motores proporcionan diferentes prestaciones y consumos de combustible, del mismo modo que diferentes núcleos en una plataforma de microcontrolador pueden ofrecer diferentes niveles de prestaciones, consumo de energía y facilidad de uso para cubrir diferentes aplicaciones.

Cale la pena destacar que a pesar de la enorme variedad de marcas, modelos y versiones especiales que ofrecen los fabricantes de coches en la actualidad, ninguno de ellos ha afirmado que un solo motor sea satisfactorio para todos los clientes.

Guerras entre ecosistemas

 

La analogía con los coches también se puede ampliar a la red de posventa o el soporte al ecosistema. Para los microcontroladores, esto incluye a terceros y sus productos.

 

El ecosistema demuestra una vez más la importancia (o la carencia) de un núcleo común. En un ecosistema determinada, por ejemplo, podría haber una amplia variedad de herramientas de desarrollo competitivas como entornos de desarrollo integrados (IDE), compiladores, bibliotecas y depuradores. No obstante, cada proveedor habrá trabajado duro para asegurar que su herramienta no sea fácilmente intercambiable con los de sus competidores. Cada uno de ellos se esforzará en proporcionar la experiencia más completa para asegurarse una continua lealtad y los ingresos procedentes de sus clientes, con independencia del núcleo común frente a terceros proveedores de la competencia.

 

Cada tercer proveedor ofrece además herramientas de hardware que invariablemente son específicas para un fabricante determinado de microcontroladores ya que se ven limitados por el conjunto de periféricos y las opciones de configuración de las patillas. Es interesante remarcar que, a día de hoy, no hay dos procesadores de 32 bit disponibles en el mismo encapsulado y que tengan patillas compatibles pese a compartir el mismo núcleo.

 

Factores ajenos al núcleo

 

El núcleo común se ha convertido en el principal aspecto a considerar, pero la selección de un microcontrolador determinado aún se ve determinado por los factores ”ajenos al núcleo” que existen con independencia del núcleo:

          Compatibilidad de patillas y universalidad de las herramientas de desarrollo.

          Flexibilidad para recurrir a una amplia variedad de periféricos, tamaños de memoria y encapsulados.

          Capacidad de seleccionar el conjunto adecuado de periféricos para cada aplicación.

          Innovación y compromiso del fabricante para ampliar continuamente las prestaciones del producto.

 

Ninguno de estos factores depende directamente de la selección de un núcleo determinado ni podrán aprovechar una menor variedad de núcleos. En todo caso, la eficiencia y la innovación exigen la selección más amplia posible en un mercado vibrante en el que se exploran continuamente las nuevas ideas y alternativas y se ponen a disposición de los ingenieros de diseño embebido.