Utilice un procesador multinúcleo para diseñar productos inteligentes multimedia de bajo consumo

Por Stephen Evanczuk

Colaboración de Editores de Digi-Key de América del Norte

Los productos inteligentes combinan cada vez más los requisitos tradicionales de diseño integrado en tiempo real con un software más exigente en el nivel de aplicación. Junto con una mayor carga computacional, estos productos tienen que permitir la interacción del usuario a través de los servicios multimedia avanzados como pantallas táctiles, gráficos 3D de alta resolución y sensores de imagen.

Mientras los requisitos aumentan, los desarrolladores se enfrentan con la presión de reducir el uso de energía, el costo y el tamaño del sistema. Esto los obliga a buscar alternativas más efectivas que los diseños tradicionales de subsistemas múltiples.

En este artículo se hablará sobre la evolución de los requisitos de diseño y de cómo los procesadores han cumplido con estos requisitos hasta el día de hoy. Luego se presentará y mostrará cómo se utilizan los nuevos procesadores de NXP Semiconductors. Estos procesadores les ofrecen a los desarrolladores una solución más simple para satisfacer la creciente demanda de diseños capaces de cumplir tanto con los requisitos informáticos de tiempo real como con los de aplicación.

Procesadores de escala para preservar la inversión del código

Siempre fue muy común que los desarrolladores mejoraran el rendimiento del equipo diseñado a través del uso de microprocesadores fabricados con núcleos adicionales destinados a cumplir con requisitos específicos de procesamiento de aplicaciones. A través de este método, los desarrolladores podían lograr un mejor rendimiento y al mismo tiempo mantener la compatibilidad con el código base existente y la experiencia en esa familia de dispositivos.

Con la serie de procesadores de aplicaciones i.MX 6 de NXP, por ejemplo, los diseñadores pueden mantener la compatibilidad del código al mismo tiempo que mejoran su rendimiento a través del uso de un microprocesador i.MX 6Solo con un núcleo procesador de aplicaciones Arm® Cortex®-A9, un i.MX 6Dual de dos núcleos o un i.MX 6Quad integrado por cuatro núcleos.

La misma necesidad de un procesamiento de aplicaciones escalable hace que evolucionen rápidamente los diseños que antes eran considerados sistemas integrados tradicionales. Para estos diseños, los fabricantes intentan añadir inteligencia a electrodomésticos, controladores industriales, instrumentos de uso médico y mucho más. Los proveedores de semiconductores respondieron con dispositivos heterogéneos de procesamiento multinúcleo (HMP) que integran núcleos de procesador de aplicaciones y núcleos de procesador integrado. Por ejemplo, la familia de productos i.MX 8M de NXP combina hasta cuatro núcleos de procesadores de aplicaciones Arm Cortex-A53 con un núcleo de procesador integrado Arm Cortex-M4.

Con este único dispositivo, los desarrolladores pueden fabricar productos de audio inteligentes. Estos productos aprovechan al máximo el procesador de aplicaciones para mejorar, filtrar o manipular la información de audio. Así, el sistema de audio depende del núcleo del procesador integrado para realizar las funciones en tiempo real necesarias para su reproducción (Figura 1). Mientras las operaciones en tiempo real se efectúan en el procesador integrado, el procesador de aplicaciones se puede poner en un modo de ahorro de energía para reducir el consumo de la energía total. Cuando se completan las operaciones en tiempo real, el procesador integrado manda una señal de alarma al procesador de aplicaciones.

Diagrama de procesadores heterogéneos multinúcleo

Figura 1: Los procesadores heterogéneos multinúcleo son efectivos sobre todo para los diseños de productos inteligentes, ya que aseguran un gran funcionamiento del equipo y ofrecen la función de tiempo real sin poner en riesgo la energía disponible. (Fuente de la imagen: NXP Semiconductors)

Junto con sus núcleos heterogéneos, la familia de productos i.MX 8M de NXP integra un gran conjunto de recursos multimedia, entre ellos una unidad de procesamiento de video (VPU) 4K y una unidad de procesamiento de gráficos (GPU) 3D de alto rendimiento. Como resultado, ofrecen una solución efectiva para una clase de video en crecimiento y para productos inteligentes con gráficos 3D.

Sin embargo, los desarrolladores que fabrican sistemas de alto rendimiento se enfrentan con la creciente demanda de sistemas de bajo consumo de energía, ya sean a batería o de alimentación en línea. Para esto, la familia de procesadores i.MX 8M Mini de NXP está fabricada con una tecnología avanzada de procesamiento por semiconductores que aborda los grandes requisitos de procesamiento de carga combinada de alto rendimiento y de consumo de energía reducido.

Sistema de alto rendimiento y bajo consumo

Al ser la primera familia HMP de NXP fabricada con una tecnología de procesamiento FinFET de 14 nm, los procesadores i.MX 8M Mini de NXP están diseñados para sistemas emergentes industriales y de Internet de las cosas (IdC) que combinan los requisitos de alto rendimiento, gran seguridad y bajo consumo. Como toda la familia i.MX 8M de NXP, el i.MX 8M Mini de NXP integra un Arm Cortex-M4 para el procesamiento integrado con hasta cuatro núcleos Arm Cortex-A53 para el procesamiento de aplicaciones. Además, cuenta con un subsistema de alta seguridad y múltiples opciones de conectividad y de E/S (Figura 2).

Diagrama del procesador i.MX 8M Mini de NXP (haga clic para ampliar)

Figura 2: El procesador i.MX 8M Mini de NXP combina hasta cuatro núcleos de procesadores de aplicaciones Arm Cortex-A53 y un núcleo integrado Arm Cortex-M4 con un gran complemento de seguridad, multimedia, características del sistema e interfaces de E/S requeridos en estos productos inteligentes emergentes. (Fuente de la imagen: NXP Semiconductors)

Para cumplir con su función en los diseños integrados, el i.MX 8M Mini reduce el número de algunos canales de E/S y las funciones de alta resolución en el subsistema multimedia a diferencia del i.MX 8M de NXP anterior. Por ejemplo, los dispositivos i.MX 8M Mini, entre ellos la versión comercial (MIMX8MM6DVTLZAA) y la industrial (MIMX8MM6CVTKZAAA), ofrecen un GPU de un solo shader y un VPU de 1080p a 60 Hertz (Hz) comparado con el GPU de cuatro shaders y VPU de 4K del i.MX 8M de NXP. En otros miembros de la familia i.MX 8M Mini, entre ellos el dispositivo comercial (MIMX8MM5DVTLZAA) y el industrial (MIMX8MM5CVTKZAA), se elimina el VPU por completo. Al igual que el i.MX 8M de NXP anterior, el i.MX 8M Mini les permite a los desarrolladores equilibrar el rendimiento y el costo, ya que aprovechan que el procesador soporta varios tipos de memoria como la de doble velocidad de datos y bajo voltaje de tercera generación (DDR3L), la DDR4 y la DDR4 de baja potencia (LPDDR4).

Menor consumo de energía

Para seguir perfeccionando el rendimiento y el consumo de energía, los desarrolladores pueden aprovechar la capacidad del i.MX 8M Mini de NXP para cambiar de forma automática o programada a los modos operativos de ahorro de energía. Bajo determinadas condiciones, los núcleos de aplicaciones pueden pasar de forma automática al modo inactivo, apagar el GPU, el VPU y los núcleos de aplicaciones, mientras se utiliza la activación de reloj para la mayor parte de la lógica interna y se mantiene energizado el caché de datos L2. En este modo, el núcleo Arm Cortex-M4 también puede continuar funcionando para realizar tareas de procesamiento integrado más tradicionales como la adquisición de datos del sensor.

El modo suspendido es más eficiente que el modo inactivo en el ahorro de energía, ya que también desactiva el controlador de doble velocidad de datos (DDRC) que maneja las interfaces de la memoria. Por último, el modo de almacenamiento seguro permanente (SNVS) mantiene la energía solo para la lógica del SNVS y el reloj en tiempo real.

Las características de reducción de energía de la tecnología de procesamiento FinFET de 14 nm utilizada en el i.MX 8M se vuelven evidentes especialmente con los modos suspendido y SNVS. En el i.MX 8M Mini con FinFET, el modo suspendido consume alrededor de 7.81 milivatios (mV). En el i.MX 8M anterior, el modo de similar funcionamiento (llamado modo de reposo profundo) consume 197 mW. Una reducción de energía similar se encuentra en el modo SNVS, en el cual el i.MX 8M Mini consume alrededor de 0.11 mW, mientras que en el i.MX 8M anterior consume alrededor de 17 mW.

Con todos los bloques funcionales y los modos operativos ajustados de manera meticulosa en dispositivos complejos como el i.MX 8M Mini, los ingenieros se enfrentan con muchos requisitos estrictos de implementación. Al igual que otros dispositivos de esta clase, el i.MX 8M Mini depende de los múltiples dominios de potencia para optimizar el manejo y la eficiencia de la energía. Para encender o apagar estos dispositivos se requiere un cumplimiento riguroso de las secuencias específicas para el encendido y apagado.

El encendido del i.MX 8M Mini comienza con la aplicación de potencia, por lo general 1.8 voltios, al preimpulsor GPIO en el banco de SNVS. En 2 milisegundos (ms) (2.4 ms como máximo), se deben aplicar 0.8 voltios (por lo general) a la lógica del núcleo SNVS. Este proceso continúa con señales específicas o con la aplicación de potencia a la secuencia de pines de ingreso del i.MX 8M Mini a través de 12 pasos adicionales, cada uno de ellos programado para funcionar en intervalos de entre 0.015 ms y 20 ms.

El apagado del dispositivo funciona a través de la secuencia invertida, pero siempre demora 10 ms entre las etapas secuenciales. En cualquiera de los casos, si no se siguen estas reglas puede ocurrir que el dispositivo no se encienda, que se genere un exceso de corriente durante el encendido o, en el peor de los casos, se puede dañar el dispositivo de manera irreversible.

El diseño físico de una placa de CI para el procesador tiene sus propios y estrictos requisitos. Para diseñar el paquete del procesador de 14 x 14 milímetros (mm) de 486 pines, NXP recomienda usar una placa de CI con un mínimo de ocho capas, que sean suficientes para mantener las guías de alimentación dentro de los parámetros de caída IR (corriente-resistencia). Al mismo tiempo, quienes se dedican a la ingeniería electrónica especializada en circuitos deben asegurar una diafonía mínima en líneas de alta velocidad, incluidas aquellas para dispositivos de memoria soportados que operan a velocidades de 1.5 gigahercios (GHz) y 3,000 millones de transferencias por segundo (MT/s).

Desarrollo rápido

Para que los ingenieros puedan acelerar el desarrollo de aplicaciones o de velocidad de los diseños de hardware personalizados, NXP ofrece el i.MX 8M Mini EVK de NXP (kit de evaluación) y el diseño de referencia asociado (Figura 3). Al ser una placa base y un sistema en módulo (SOM), el kit de evaluación brinda un sistema completo que incluye una memoria externa LPDDR4 y flash, además de USB y otras interfaces.

Diagrama del conjunto de placas del i.MX 8M Mini EVK de NXP (haga clic para ampliar)

Figura 3: El conjunto de placas del i.MX 8M Mini EVK de NXP ofrece una plataforma de sistema completa para la evaluación inmediata de procesadores i.MX 8M Mini y para el rápido desarrollo de aplicaciones para procesadores heterogéneos multinúcleo. (Fuente de la imagen: NXP Semiconductors)

Aparte de Gigabit Ethernet, el kit incluye las opciones de conectividad a Wi-Fi y Bluetooth. También hay placas adicionales disponibles, como el módulo de cámara MINISASTOCSI y la pantalla táctil MX8-DSI-OLED1 con diodo orgánico emisor de luz (OLED), que completan el diseño de las aplicaciones de video y pantalla.

Al tener disponibles imágenes prediseñadas de sistemas operativos integrados como Linux® y Android®, los desarrolladores pueden usar el kit de forma inmediata para evaluar el procesador i.MX 8M Mini y ejecutar las aplicaciones de muestra. Para los desarrolladores que estén diseñando sus propias aplicaciones de software, NXP ofrece de forma gratuita el kit de desarrollo de software (SDK) i.MX 8M Mini, que brinda una serie completa de componentes de software para diseñar una típica aplicación integrada de alto rendimiento (Figura 4).

Diagrama del kit de desarrollo de software (SDK) MCUXpresso de NXP

Figura 4: La arquitectura del kit de desarrollo de software (SDK) MCUXpresso incluye la serie completa de capas de software como controladores, un paquete de soportes para placas y otros componentes opcionales requeridos para desarrollar la mayoría de las aplicaciones integradas. (Fuente de la imagen: NXP Semiconductors)

A través del uso del Tablero online SDK MCUXpresso de NXP, los desarrolladores pueden configurar el SDK para la cadena de herramientas GCC Arm Embedded o el IAR Embedded Workbench para la arquitectura Arm. El tablero también les permite a los desarrolladores agregar componentes opcionales de middleware como la biblioteca Arm Cortex Microcontroller Software Interface Standard (CMSIS) DSP y Amazon FreeRTOS. La distribución del SDK configurada se completa con las librerías estándar de Arm, los controladores periféricos, los envoltorios de controladores periféricos para FreeRTOS y una amplia serie de muestras de software. Entre las muestras de software de la distribución del SDK, un par de aplicaciones demuestran un patrón clave del diseño de intercambio de mensajes que es fundamental para una informática heterogénea.

En cualquier entorno computacional multinúcleo, los procesadores separados requieren de mecanismos eficientes para transmitir solicitudes y compartir información. Para las aplicaciones del i.MX 8M Mini EVK, NXP utiliza el RPMsg-Lite, una versión liviana del protocolo de mensajería Remote Processor Messaging (RPMsg). El protocolo de mensajería RPMsg fue creado en el marco del proyecto Open Asymmetric Multi Processing (OpenAMP) para brindar una interfaz estándar para la comunicación entre múltiples núcleos en un sistema heterogéneo multinúcleo. El RPMsg-Lite de NPX aborda las limitaciones de recursos en sistemas integrados más pequeños y deja una huella menor a la vez que elimina las características que no son coherentes con estos sistemas.

Dentro de la distribución del SDK, una aplicación de muestra, rpmsg_lite_pingpong_rtos, demuestra un intercambio básico, utiliza RPMsg-Lite para implementar una simple interacción ping-pong entre distintos procesadores (Listado 1). Luego de crear una cola para RPMsg (my_queue) y un punto final (my_ept) para el otro procesador “remoto”, el procesador “host” de aplicaciones manda una señal al núcleo remoto. Luego de establecer comunicación con el núcleo remoto, el host empieza un bucle y se mantiene bloqueado esperando recibir un mensaje “ping” del remoto, para poder enviar su propia respuesta “pong”.

Copy void app_task(void *param) {    .
.
.
my_rpmsg = rpmsg_lite_remote_init((void *)RPMSG_LITE_SHMEM_BASE, RPMSG_LITE_LINK_ID, RL_NO_FLAGS);       while (!rpmsg_lite_is_link_up(my_rpmsg))         ;     PRINTF("Link is up!\r\n");       my_queue = rpmsg_queue_create(my_rpmsg);     my_ept = rpmsg_lite_create_ept(my_rpmsg, LOCAL_EPT_ADDR, rpmsg_queue_rx_cb, my_queue);     ns_handle = rpmsg_ns_bind(my_rpmsg, app_nameservice_isr_cb, NULL);     rpmsg_ns_announce(my_rpmsg, my_ept, RPMSG_LITE_NS_ANNOUNCE_STRING, RL_NS_CREATE);     PRINTF("Nameservice announce sent.\r\n");       /* Wait Hello handshake message from Remote Core. */     rpmsg_queue_recv(my_rpmsg, my_queue, (unsigned long *)&remote_addr, helloMsg, sizeof(helloMsg), NULL, RL_BLOCK);         while (msg.DATA <= 100)     {         PRINTF("Waiting for ping...\r\n");         rpmsg_queue_recv(my_rpmsg, my_queue, (unsigned long *)&remote_addr, (char *)&msg, sizeof(THE_MESSAGE), NULL,                          RL_BLOCK);         msg.DATA++;         PRINTF("Sending pong...\r\n");         rpmsg_lite_send(my_rpmsg, my_ept, remote_addr, (char *)&msg, sizeof(THE_MESSAGE), RL_BLOCK);     }       PRINTF("Ping pong done, deinitializing...\r\n");       rpmsg_lite_destroy_ept(my_rpmsg, my_ept);     my_ept = NULL;     rpmsg_queue_destroy(my_rpmsg, my_queue);     my_queue = NULL;     rpmsg_ns_unbind(my_rpmsg, ns_handle);     rpmsg_lite_deinit(my_rpmsg);     msg.DATA = 0;      .
.
.
} 

Lista 1: El fragmento del código de muestra que se brinda en el kit de desarrollo de software MCUXpresso muestra el patrón básico de diseño para realizar interacciones entre diferentes procesadores en un procesador heterogéneo multinúcleo. (Fuente del código: NXP Semiconductors)

Los desarrolladores se pueden basar fácilmente en este intercambio simple para poder crear operaciones completas diseñadas para distribuir la ejecución de tareas entre múltiples procesadores. Otra aplicación de muestra, sai_low_power_audio, utiliza RPMsg-Lite fundamentalmente como una capa de enlace de datos de bajo nivel para un protocolo de aplicación de mensajería simplificada en tiempo real de mayor nivel, llamada Simplified Real Time Messaging (SRMT). En esta aplicación, un procesador Arm Cortex-A53 utiliza este protocolo de SRTM para solicitar al procesador Arm Cortex-M4 que vuelva a reproducir un archivo de audio alojado en una memoria compartida. Una vez que tiene el control del búfer compartido, el M4 realiza varias operaciones, básicamente ejecuta una transacción inteligente de acceso directo a la memoria (SDMA) para transferir los datos al código adecuado y finalmente a la interfaz de audio serial (SAI) para la salida de audio. Durante la operación, el núcleo A53 puede entrar en modo de ahorro de energía. Aunque es más compleja para diseñar que la aplicación ping-pong, la aplicación de muestra sai_low_power_audio demuestra cómo pueden utilizar los desarrolladores los procesadores heterogéneos multinúcleo para aprovechar al máximo el rendimiento a la vez que minimizan el consumo de energía en productos inteligentes.

Conclusión

Los productos inteligentes combinan sistemas tradicionales de procesamiento integrado en tiempo real con una considerable capacidad de procesamiento de aplicaciones. Sin embargo, los desarrolladores deben cumplir con estos requisitos de procesamiento y a la vez satisfacer las constantes expectativas de productos de bajo consumo tanto en sistemas de alimentación a batería como de línea.

Al estar fabricado con un proceso avanzado de semiconductores, el procesador de aplicaciones i.MX 8M Mini de NXP ofrece la combinación requerida de bajo consumo de energía y capacidad de procesamiento heterogéneo multinúcleo de alto rendimiento. Al utilizar los dispositivos de NPX i.MX 8M Mini, los desarrolladores pueden responder de manera más efectiva ante los nuevos requisitos de informática de alto rendimiento en los diseños de sistemas integrados que se necesitan en los productos inteligentes, que son cada vez más sofisticados.

Descargo de responsabilidad: Las opiniones, creencias y puntos de vista expresados por los autores o participantes del foro de este sitio web no reflejan necesariamente las opiniones, las creencias y los puntos de vista de Digi-Key Electronics o de las políticas oficiales de Digi-Key Electronics.

Acerca de este autor

Stephen Evanczuk

Stephen Evanczuk tiene más de 20 años de experiencia escribiendo para y sobre la industria de electrónica en un amplio rango de temas, entre ellos hardware, software, sistemas y aplicaciones, que incluyen IoT. Se doctoróen neurociencias (redes neuronales) y trabajó en la industria aeroespacial en sistemas seguros con distribución masiva y métodos de aceleración de algoritmos. Actualmente, cuando no escribe artículos sobre tecnología e ingeniería, trabaja en aplicaciones de aprendizaje profundo sobre sistemas de reconocimiento y recomendaciones.

Acerca de este editor

Editores de Digi-Key de América del Norte