1 votos

Implicaciones del escalado dinámico de frecuencias en un sistema embebido

El escalado dinámico de la frecuencia se utiliza para aumentar o disminuir la velocidad de un procesador para conservar la energía, el calor, etc. He visto que mi propio procesador fluctúa entre los 3GHz y los 3,5GHz.

¿Qué implicaciones tiene el cambio de la frecuencia del reloj? En mi ejemplo anterior hay una diferencia de 500MHz. ¿Existe alguna consideración de diseño en un dispositivo embebido que deba ser observada cuando se diseña para un reloj variable? ¿Existen peligros en un dispositivo que controla su propia frecuencia de reloj?

Supongamos que en el escenario de diseño no tenemos limitaciones de potencia, calor o cualquier otra limitación física. El reloj del dispositivo puede ajustarse a cualquier frecuencia.

1 votos

comunidades.mentor.com/docs/DOC-3171 discute cómo implementar cuando se utiliza RTOS Esto da una visión más amplia blogs.mentor.com/embedded/blog/2012/08/27/

0 votos

Obviamente, las tareas sensibles al tiempo, necesitan una IRQ externa a cierto ritmo regular para realizar operaciones en tiempo real y la pila de tareas necesita ser gestionada adecuadamente.

1voto

dahulius Puntos 11

Sí, claro que hay problemas. Si la nueva frecuencia de reloj es generada por un PLL, hay que dejar tiempo para que el PLL se asiente y se ajuste a la nueva frecuencia.

Si aumenta la frecuencia de reloj, es posible que también tenga que aumentar la tensión de funcionamiento del núcleo. Por otro lado, si reduces la frecuencia, es posible que quieras reducir el voltaje del núcleo para ahorrar energía.

Muchos periféricos no pueden funcionar a la misma frecuencia que el reloj del sistema, por lo que si aumentas el reloj del sistema puede que tengas que cambiar los valores del divisor utilizados para crear los relojes de los periféricos.

Algunos periféricos, como las UART, utilizan divisores de reloj para generar frecuencias específicas. Si cambias el reloj del sistema, es posible que también haya que ajustar estos divisores.

Si aumentas el reloj del sistema, puede que tengas que añadir "estados de espera" a los accesos de los dispositivos de memoria más lentos, como la memoria flash. Como alternativa, podrías copiar el código ejecutable a la RAM y ejecutarlo desde allí.

Como ejemplo de microcontrolador en el que estas cuestiones son relevantes, véase el MSP432.

0 votos

Todas las consideraciones lógicas de diseño. Gracias por su tiempo.

0voto

Neil Foley Puntos 1313

Para la gran mayoría de los sistemas embebidos, no tiene sentido cambiar el reloj de la CPU de forma dinámica. Sencillamente porque el problema del calor de los ordenadores PC no existe en los microcontroladores.

Cuando se utiliza el PLL/FLL para ajustar la frecuencia del sistema, la mayoría de las veces se trata de una configuración única. Lo que siempre es una cuestión de velocidad de ejecución frente al consumo de corriente. En la mayoría de los MCU hay que configurar los "estados de espera" de la flash en función de la velocidad del reloj. Muy simplificado: si la memoria flash no puede leerse tan rápido como la CPU está funcionando, la CPU tiene que esperar entre lecturas (en la práctica, no siempre lo hace, ya que hay pipelining, predicción de ramas y caché).

Pero el único tipo de cambios dinámicos de reloj que probablemente verás, es cuando tienes especificaciones de baja corriente, donde el reloj y la ejecución se detendrán por completo, el núcleo se pondrá "dormido" hasta que se despierte de nuevo por una interrupción externa. Pueden existir configuraciones más avanzadas, donde tienes un modo de ejecución y un modo de bajo consumo, con la CPU realizando cálculos de baja prioridad a baja velocidad en lugar de dormir, pero eso es un caso bastante especial.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X