Cómo acelerar el monitoreo periférico en dispositivos portátiles de bajo consumo con DMA

Resumen

Este artículo explica los casos de uso, las ventajas y las desventajas de utilizar el acceso directo a la memoria (DMA) en la programación de sistemas integrados. El artículo describe cómo DMA interactúa con los módulos de memoria y periféricos para una operación más eficiente de las CPU. El artículo también presentará al lector las diferentes arquitecturas de acceso al bus DMA y las ventajas de cada una.

Una tarea que es común para los sistemas integrados es administrar la entrada externa. La gestión de la entrada puede generar mucha tensión computacional innecesaria en el procesador, lo que provoca períodos más prolongados en los modos de energía activa y tiempos de respuesta lentos. Para optimizar la energía, conservar respuestas rápidas a eventos y administrar grandes transferencias de datos continuas, un microcontrolador con acceso directo a memoria (DMA) puede ofrecer la mejor solución.

Acceso directo a memoria (DMA)

En las aplicaciones de sistemas que involucran periféricos, hay muchos puntos en los que un microprocesador puede convertirse en un cuello de botella. Por ejemplo, al administrar un ADC que envía datos constantemente, un procesador puede interrumpirse con tanta frecuencia que tenga dificultades para realizar otras tareas. DMA es un método para mover datos y minimizar la participación del procesador en transacciones de datos grandes o rápidas. Puede pensar en el controlador DMA como un coprocesador cuyo único propósito es interactuar con la memoria y los periféricos. Esto permite que el procesador principal administre con éxito un periférico codicioso, se concentre en otra tarea o incluso se duerma y ahorre energía mientras las transacciones de datos ocurren en segundo plano. Por ejemplo, en Brazo® arquitecturas, un módulo DMA puede funcionar durante los modos LP2 (reposo) o LP3 (ejecución). Esto puede brindar una clara ventaja en aplicaciones que requieren una mayor duración de la batería, como concentradores de sensores portátiles y relojes inteligentes.

Ventajas y desventajas

DMA es útil en muchos sistemas digitales y, a veces, incluso se requiere para administrar grandes cantidades de tráfico de autobuses. Se ha utilizado en tarjetas de red, tarjetas gráficas e incluso en algunas de las PC originales de IBM. Dicho esto, incorporar DMA en un diseño tiene algunas ventajas y desventajas.

Tabla 1. Ventajas de usar DMA
Ventajas de usar DMA
Tiempo de CPU DMA minimiza la necesidad de interrupciones y ejecución del procesador, lo que reduce el tiempo de CPU necesario para las transacciones de datos.
El consumo de energía El uso de DMA puede generar oportunidades para minimizar el consumo de energía si permite que el procesador entre en reposo durante las transferencias de DMA.
Operación en paralelo Dependiendo de los detalles arquitectónicos del bus del sistema, el procesador puede ejecutar otras operaciones mientras se realizan las transacciones periféricas.
Tabla 2. Desventajas de usar DMA
Ventajas de usar DMA
Costo La incorporación de un sistema con DMA requiere un controlador DMA, y esto puede encarecer el sistema.
Complejidad Si bien DMA puede reducir la frecuencia de las interrupciones, puede aumentar el tamaño y la complejidad del firmware de la aplicación.
Dependencia de la plataforma Los controladores DMA tienen diferentes arquitecturas internas entre y dentro de los fabricantes y pueden tener un comportamiento diferente según sus esquemas nativos de acceso al bus.
Incoherencia de caché Las transacciones de DMA pueden provocar que se produzcan errores lógicos al escribir en una capa almacenada en caché de la jerarquía de la memoria. Esto se puede resolver mediante el uso de arquitecturas de sistemas coherentes con la memoria caché o mediante la invalidación del almacenamiento en memoria caché al finalizar la DMA.

Acceso al Bus y Ciclos de CPU

Si bien los controladores DMA pueden ser increíblemente efectivos para conservar energía o acelerar los sistemas integrados, su implementación no está muy estandarizada. Existen múltiples esquemas para asegurarse de que el acceso al bus interno no se conceda simultáneamente con la CPU. El objetivo del esquema de acceso al bus es principalmente evitar el acceso simultáneo a las mismas ubicaciones de memoria, lo que puede generar incoherencia en la memoria caché y errores lógicos. Por lo general, un solo controlador DMA se configurará para emplear uno de estos esquemas, ya que es posible que se requiera un control de hardware o firmware diferente para usar cada uno de ellos. Los esquemas de acceso al bus utilizados por la mayoría de los controladores DMA son ráfagas, robo de ciclos y DMA transparente.

El DMA transparente solo puede ejecutar una sola operación a la vez, pero también debe esperar a que el procesador ejecute instrucciones en las que otorga acceso a los datos o buses de direcciones deseados. Se requiere lógica adicional para verificar esta restricción de acceso y este tipo de DMA es generalmente el más lento. El DMA transparente puede resultar ventajoso en aplicaciones en las que se debe realizar un procesamiento adicional que no requiere acceso a los buses de memoria. La ventaja en este caso sería la eliminación de estrangular la CPU, ya que el procesador no tiene que dejar de funcionar por completo.

Tabla 3. Resumen de los tipos de DMA y sus ventajas y desventajas
Tipo de DMA ventajas Contras
Ráfaga DMA El tipo de DMA más rápido Períodos relativamente largos de tiempo de inactividad de la CPU
DMA de robo de ciclo La CPU no está inactiva durante largos períodos continuos Más lento que ráfaga de DMA
DMA transparente No es necesario limitar el uso de la CPU Forma más lenta de DMA
Figura 1. Diagrama arquitectónico de DMA en ráfagas durante las operaciones de DMA.

Burst DMA se produce a través de grandes ráfagas poco frecuentes, en las que el controlador de DMA envía tantos datos al búfer de destino como el búfer puede contener. El controlador DMA bloquea la operación de la CPU durante un período muy corto para mover una gran parte de la memoria y luego cede el bus de regreso a la CPU principal, repitiendo hasta que se completa la transferencia. Burst DMA generalmente se considera el tipo más rápido.

Figura 2. El DMA de robo de ciclos durante las operaciones de DMA ocurre entre dos ciclos de CPU.

Por el contrario, la transferencia de un solo byte o el DMA de robo de ciclos sigue el ejemplo de la CPU y solo realiza operaciones entre las instrucciones de la CPU. Inserta una sola operación entre dos ciclos de CPU y, por lo tanto, está "robando" tiempo de CPU. Debido a la limitación de ejecutar una operación a la vez, generalmente es más lento que DMA en ráfagas.

Figura 3. La DMA transparente durante las operaciones de DMA ocurre mientras el procesador trabaja en tareas que no acceden a los buses de datos o direcciones.

Ejemplo de una arquitectura Burst DMA

Figura 4. Un diagrama arquitectónico del controlador DMA en el MAX32660.

Puede encontrar un ejemplo de un controlador DMA en ráfagas en el MAX32660 (ver Figura 4). La ruta superior corresponde al flujo de datos y la ruta inferior representa el flujo de control/estado entre el bus de alto rendimiento avanzado (AHB) y la lógica DMA. El controlador DMA puede comportarse como una interfaz de búfer entre el AHB y la memoria o los módulos periféricos, según cómo esté configurado. La lógica DMA se encuentra entre el búfer DMA y cada periférico para administrar de forma independiente cada bus periférico único durante las transacciones. Una operación DMA puede mover hasta 32 bytes a la vez, siempre que los búfer de origen/destino puedan contener esta cantidad de datos. El búfer puede contener hasta 16 MB y se puede configurar para transmitir o recibir I2C, SPI, yo2S y UART además de las transferencias de memoria interna. La programación del control DMA puede variar ligeramente entre protocolos, pero las transacciones periféricas son gestionadas exclusivamente por el controlador DMA. Un módulo árbitro controla las restricciones de acceso al bus entre los cuatro canales DMA y la CPU, otorgando solicitudes de acuerdo con un sistema de prioridad.

Opciones modernas de DMA

En resumen, DMA es una función crítica para los sistemas integrados modernos que administran una gran cantidad de sensores y requieren un alto rendimiento, eficiencia y operación de bajo consumo. Se comporta como un coprocesador dedicado exclusivamente a transacciones de bus de memoria y periféricos.

El uso de DMA es imperativo para muchas aplicaciones para minimizar el consumo de energía y aligerar las cargas del procesador. Por ejemplo, los dispositivos portátiles y de salud manejan grandes cantidades de datos, pero también deben conservar la mayor cantidad posible de carga de batería, todo mientras manejan datos confidenciales. Analog Devices ofrece arquitecturas DMA de ráfaga rápida en microcontroladores bien equipados para diseños portátiles de bajo consumo, como el MAX32660 y MAX32670. Además, los microcontroladores DARWIN Arm como el MAX32666 están diseñados para aplicaciones portátiles e IoT con Bluetooth integrado® 5. Estos dispositivos tienen dos controladores DMA de ráfagas de 8 canales con soporte integrado para transacciones basadas en eventos. Incluso cuentan con el mejor hardware de seguridad de su clase con un gestor de arranque seguro y una unidad de protección de confianza (TPU) para acelerar el cifrado ECDSA, SHA-2 y AES. Desde las primeras PC de IBM hasta las tarjetas de red, y ahora hasta dispositivos IoT y portátiles seguros y de bajo consumo, DMA es una característica esencial de los sistemas digitales modernos.

Si quieres conocer otros artículos parecidos a Cómo acelerar el monitoreo periférico en dispositivos portátiles de bajo consumo con DMA puedes visitar la categoría Generalidades.

¡Más Contenido!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir