Actualizado a: 19 de enero de 2024
La frecuencia de reloj es como el latido del corazón para un ordenador, como el director de orquesta que es el que marca el ritmo de todos los pasos que realizan los circuitos digitales con reloj, como es el caso de la CPU, los buses, GPU, memoria RAM, etc. Pero ¿qué es? ¿cómo se genera? ¿qué hace? Todo eso te lo voy a explicar en este artículo.
Frecuencia
La frecuencia es una medida de la cantidad de repeticiones o ciclos que ocurren en un fenómeno periódico en un determinado intervalo de tiempo. Es decir, representa la cantidad de veces que una onda, señal o evento se repite en un segundo.
La unidad de medida de la frecuencia es el hercio (Hz), que representa un ciclo por segundo. Por ejemplo, si una onda completa se repite 100 veces en un segundo, su frecuencia es de 100 Hz. No obstante, hay que decir que generalmente se mide en multiplos de esta unidad del SI (Sistema Internacional), como es el caso del khz (kilohercio), Mhz (megahercio), o el Ghz (gigahercio), es decir, 1000, 1.000.000 o 1.000.000.000 hercios respectivamente.
Periodo y ciclo
El periodo y el ciclo son conceptos relacionados con la frecuencia y se utilizan para describir la duración y repetición de un fenómeno periódico.
- Periodo: es el tiempo necesario para que un fenómeno periódico se repita completamente una vez. En el contexto de la frecuencia, el periodo es el inverso de la frecuencia. Es decir, si f representa la frecuencia en hercios (Hz), el periodo (T) se calcula como:
T = 1 / f
Por ejemplo, si tenemos una onda con una frecuencia de 100 Hz, su periodo sería:
T = 1 / 100 Hz = 0.01 segundos (o 10 milisegundos)
Esto significa que la onda completa se repite cada 0.01 segundos.
- Ciclo: es una unidad de repetición completa de un fenómeno periódico. Se refiere a un ciclo completo del fenómeno, desde un punto inicial hasta el mismo punto en el siguiente periodo, y el tiempo que transcurre desde el inicio hasta el fin es el periodo. Por ejemplo, en el caso de una onda sinusoidal, un ciclo se completaría desde el punto más bajo, subir hasta el punto más alto, volver al punto más bajo y luego repetirse.
Frecuencia de señal cuadrada
Una frecuencia u onda cuadrada es un tipo de señal periódica que alterna entre dos niveles de amplitud, generalmente representados como alto (nivel alto o 1) y bajo (nivel bajo o 0), de manera repetitiva en el tiempo. Es una señal que tiene una forma de onda cuadrada, lo que significa que cambia abruptamente entre sus dos niveles de amplitud en intervalos regulares.
En una frecuencia cuadrada, el tiempo que toma para completar un ciclo completo (ir desde el nivel alto al bajo y luego volver al nivel alto) se conoce como el periodo de la señal. La inversa del periodo representa la frecuencia de la señal, que se mide en hercios (Hz) y representa la cantidad de ciclos completados en un segundo.
Las frecuencias cuadradas son ampliamente utilizadas en electrónica y comunicaciones, ya que son útiles para transmitir información digitalmente. Por ejemplo, en la lógica digital, los circuitos y procesadores utilizan frecuencias cuadradas para representar y procesar datos binarios (1s y 0s) en forma de pulsos eléctricos.
Las características distintivas de una frecuencia cuadrada, como su forma de onda cuadrada y el cambio abrupto entre niveles de amplitud, permiten una transmisión eficiente y precisa de información digital, lo que la convierte en una señal fundamental en muchos sistemas electrónicos y tecnologías digitales. Además, estas ondas se pueden usar como reloj para marcar el ritmo como veremos más adelante.
Frecuencia de reloj
La velocidad de reloj, o frecuencia de reloj, es la cantidad de veces por segundo que opera un circuito y está más asociada con la unidad central de procesamiento (CPU). Se mide en hercios o ciclos por segundo. A mayor velocidad de reloj, mayor potencia de procesamiento, manteniendo todo lo demás igual. También se conoce como tasa de reloj, frecuencia de núcleo o frecuencia de reloj.
Los circuitos complejos requieren una sincronización precisa para funcionar correctamente. El reloj es un pulso regular que mantiene todo el circuito trabajando en sincronía. Es como el líder en un bote de remos que indica cuándo tirar de los remos. Cuanto más rápido indica el líder que los remeros tiren, más trabajo se realiza.
El reloj es un pulso eléctrico regular que se enciende y apaga. Cada vez que el pulso pasa de encendido a apagado y luego vuelve a encenderse, se cuenta como un ciclo. En cada ciclo, el circuito puede realizar una operación.
Aunque la velocidad de reloj se asocia comúnmente con las CPU, otros componentes que utilizan circuitos integrados (CI) también tienen un reloj para sincronizar las operaciones. Una unidad de procesamiento gráfico discreta puede tener su propia velocidad de reloj que genera y utiliza, y la memoria RAM puede estar sincronizada con el reloj de la CPU del sistema.
Existen diferentes formas en que los fabricantes de circuitos pueden generar el pulso de reloj. Históricamente, se han utilizado cristales de cuarzo oscilantes para generar pulsos de reloj con precisión, y otra circuitería podría luego multiplicar esa frecuencia a la velocidad necesaria. En las CPU modernas de alta velocidad, se genera un pulso de referencia mediante un circuito oscilante. Esto se puede utilizar para establecer la velocidad del bus frontal. Luego, se aplica un multiplicador adicional al bus para generar la velocidad del núcleo de la CPU.
Además de la velocidad de reloj, hay muchas variables que pueden afectar el rendimiento de una CPU. Por lo tanto, la velocidad de reloj solo se puede comparar directamente en la misma generación y familia de procesadores.
Si un ordenador se compara con un vehículo, entonces la CPU es el motor del vehículo; es donde se realiza el trabajo. La velocidad de reloj de la CPU es como las revoluciones por minuto (RPM) del motor. En general, no dirías que solo porque un motor tiene un RPM máximo más alto, genera más potencia; de manera similar, debes considerar más factores que solo la velocidad de reloj para determinar cuánto rendimiento puedes obtener de una CPU.
Las RPM del motor suben y bajan según la potencia necesaria. Esto ahorra gasolina y produce menos calor que correr a toda velocidad todo el tiempo. Esto es similar a la CPU que varía su velocidad de reloj para consumir menos energía y generar menos calor.
Algunos entusiastas modifican su motor o usan combustible premium o aditivos para hacerlo funcionar a un RPM extremadamente alto, más allá de la zona roja. Esto arriesga dañar el motor. Esto es como hacer overclocking a una CPU…
Escalado de frecuencia dinámico
El escalado de frecuencia dinámico (también conocida como throttling de CPU) es una técnica de administración de energía en la arquitectura de computadoras que permite ajustar automáticamente la frecuencia de un microprocesador «sobre la marcha» según las necesidades reales, con el fin de conservar energía y reducir la cantidad de calor generado por el chip. La escalabilidad dinámica de frecuencia ayuda a preservar la batería en dispositivos móviles y disminuir los costos de enfriamiento y el ruido en entornos informáticos silenciosos, o puede ser útil como medida de seguridad para sistemas sobrecalentados (por ejemplo, después de un overclocking deficiente).
Casi siempre, la escalabilidad dinámica de frecuencia se combina con la escalabilidad dinámica de voltaje, ya que las frecuencias más altas requieren voltajes de suministro más altos para que el circuito digital arroje resultados correctos. El tema combinado se conoce como escalabilidad dinámica de voltaje y frecuencia (DVFS).
El throttling del procesador también se conoce como «underclocking automático». El overclocking automático (aumento de frecuencia) también es técnicamente una forma de escalabilidad dinámica de frecuencia, pero es relativamente nueva y generalmente no se discute con el throttling.
La potencia dinámica (potencia de conmutación) disipada por un chip es P=C·V2·A·f, donde C es la capacitancia que se cambia por ciclo de reloj, V es el voltaje, A es el Factor de Actividad, que indica el número promedio de eventos de conmutación por ciclo de reloj de los transistores en el chip (como una cantidad adimensional) y f es la frecuencia del reloj.
Por lo tanto, el voltaje es el principal determinante del consumo de energía y el calor generado. El voltaje requerido para un funcionamiento estable está determinado por la frecuencia a la que se sincroniza el circuito, y se puede reducir si también se reduce la frecuencia. Sin embargo, la potencia dinámica por sí sola no explica la potencia total del chip, ya que también existe la potencia estática, que se debe principalmente a diversas corrientes de fuga. Debido al consumo de potencia estática y el tiempo de ejecución asintótico, se ha demostrado que el consumo de energía del software muestra un comportamiento de energía convexo, es decir, existe una frecuencia óptima de la CPU en la que se minimiza el consumo de energía. La corriente de fuga se ha vuelto cada vez más importante a medida que el tamaño de los transistores se ha vuelto más pequeño y los niveles de tensión umbral se reducen. Hace una década, la potencia dinámica representaba aproximadamente dos tercios de la potencia total del chip. La pérdida de potencia debido a las corrientes de fuga en las CPU y SoC contemporáneas tiende a dominar el consumo de energía total. En el intento de controlar la potencia de fuga, los compuertas de metal de alta k y el «power gating» han sido métodos comunes.
La eficiencia de algunos componentes eléctricos, como los reguladores de voltaje, disminuye con el aumento de la temperatura, por lo que el consumo de energía puede aumentar con la temperatura. Dado que un mayor consumo de energía puede aumentar la temperatura, el aumento del voltaje o la frecuencia puede aumentar aún más las demandas de energía del sistema más allá de lo que indica la fórmula CMOS, y viceversa.
Más sobre esto en ACPI y los Modos Turbo de la CPU
Overclocking y underclocking / Overvolting y undervolting
El overclocking y el underclocking son técnicas utilizadas para modificar la velocidad de reloj de un componente electrónico, generalmente aplicadas a procesadores, tarjetas gráficas y memorias, entre otros. Y son:
- Overclocking: es una práctica en la que se aumenta la velocidad de reloj de un componente más allá de las especificaciones de fábrica. En otras palabras, se hace que el componente funcione a una frecuencia más alta de la que fue diseñado para operar de manera predeterminada. Esto se logra ajustando la configuración en la BIOS o UEFI del sistema, o mediante software especializado. El overclocking se realiza para obtener un mayor rendimiento del componente, lo que puede traducirse en un mejor desempeño en tareas que requieren una alta potencia de procesamiento, como juegos, edición de video o renderizado 3D. Sin embargo, al aumentar la frecuencia, también aumenta la cantidad de calor generado y el consumo de energía, lo que puede llevar a un mayor desgaste y acortar la vida útil del componente. Por esta razón, el overclocking debe realizarse con precaución y considerando la capacidad de enfriamiento del sistema. Además, para que el chip sea estable, el overclocking va acompañado de un overvolting, es decir, de un incremento del voltaje. Si se aumenta la frecuencia de reloj sin aumentar el voltaje se puede generar inestabilidad.
- Underclocking: en contraste, el underclocking es una técnica en la que se reduce la velocidad de reloj de un componente por debajo de sus especificaciones estándar. Esto se hace generalmente para reducir el consumo de energía y el calor generado, lo que puede ser útil en dispositivos móviles o en situaciones donde el rendimiento máximo no es necesario. El underclocking también puede utilizarse como una medida de seguridad para reducir la probabilidad de sobrecalentamiento en sistemas que presentan problemas de enfriamiento o en procesadores que han sido sometidos previamente a overclocking. Al reducir la frecuencia, se disminuye la cantidad de calor que se produce y se mejora la eficiencia energética del componente. Cuando se realiza una bajada de la frecuencia de reloj también se puede realizar un undervolting o bajada del voltaje.
Cómo se genera la frecuencia de reloj (Xtal)
La frecuencia de reloj de un ordenador es generada por un circuito electrónico llamado «oscilador de cristal» o «oscilador de cuarzo» (Xtal). Este componente es esencial para mantener una señal de temporización precisa y constante que sincroniza las operaciones de todos los componentes del sistema. Y se encuentra en la placa base, generando así una frecuencia base baja que alimentará mediante el bus principal al resto de componentes (CPU, memoria RAM, ranuras de expansión, etc.).
El oscilador de cristal está compuesto por un cristal de cuarzo cortado de manera precisa y montado en un circuito eléctrico. El cristal tiene una propiedad piezoeléctrica, lo que significa que tiene la capacidad de vibrar mecánicamente cuando se aplica un voltaje a sus caras. Estas vibraciones se generan cuando una corriente eléctrica alterna es aplicada al cristal, lo que lo hace oscilar a una frecuencia específica.
La frecuencia a la que oscila el cristal de cuarzo está determinada por su forma y dimensiones físicas, lo que lo hace inherentemente estable y preciso en su frecuencia de oscilación. Los cristales de cuarzo están diseñados para oscilar en una frecuencia específica, como 4, 8, 16 o 32 megahercios (MHz) en los ordenadores modernos.
El oscilador de cristal genera una señal eléctrica de frecuencia constante que se utiliza como base para el reloj del sistema. Esta señal se divide y distribuye a todos los componentes del ordenador, incluyendo la CPU, memoria, tarjetas gráficas, etc. Cada componente del sistema realiza sus operaciones de manera sincronizada con la señal del reloj, lo que garantiza un funcionamiento coordinado y coherente de todo el sistema.
La estabilidad y precisión del oscilador de cristal son fundamentales para el correcto funcionamiento del ordenador. Si la frecuencia del oscilador no es precisa, puede provocar problemas de sincronización y rendimiento en el sistema. Por esta razón, los osciladores de cristal utilizados en los ordenadores se seleccionan y calibran cuidadosamente durante el proceso de fabricación para garantizar una señal de reloj confiable y precisa.
Distribución a través del bus
Esta frecuencia de reloj generada en el Xtal de la placa base llegará a los distintos componentes, como he mencionado anteriormente. Pero al ser tan baja, no sirve para alimentar a los distintos componentes. Por ejemplo, una placa base con un Xtal de 25 Mhz no podría emplearse tal cual para una CPU de 3.2Ghz. Por eso se usan multiplicadores y divisores de frecuencia, como si de un carril de aceleración y desaceleración de una autovía se tratase. De esta forma, todos los buses internos y externos se pueden sincronizar como es debido.
Multiplicador de frecuencia
Multiplicador de frecuencia es un dispositivo o circuito que aumenta la frecuencia de una señal de entrada para producir una señal de salida con una frecuencia más alta. Esto se logra al generar ciclos adicionales de la señal de entrada dentro de un período dado. Por ejemplo, si se aplica una señal de entrada de 25 MHz a un multiplicador de frecuencia por un factor de x40, el multiplicador generará una señal de salida de 1 GHz. Los multiplicadores de frecuencia son comúnmente utilizados para aumentar la velocidad de operación de ciertos componentes, como los procesadores o las memorias, para lograr un mayor rendimiento en un sistema. Es decir, cuando les llega la señal de reloj del bus externo, más baja, pueden multiplicarla para generar un reloj interno más alto al que estén preparados para funcionar.
Divisor de frecuencia
Divisor de frecuencia es un dispositivo o circuito que disminuye la frecuencia de una señal de entrada para producir una señal de salida con una frecuencia más baja. Esto se logra al eliminar ciclos de la señal de entrada para que ocurran menos ciclos en un período dado. Por ejemplo, si se aplica una señal de entrada de 1 GHz a un divisor de frecuencia por un factor de x20, el divisor generará una señal de salida de 50 MHz. Los divisores de frecuencia son utilizados para ralentizar ciertos componentes o para adaptar la frecuencia de una señal a otros dispositivos o circuitos que funcionen a una velocidad más baja. Por ejemplo, una CPU que trabaja a 1 Ghz, cuando se comunica con el bus externo, a una velocidad más baja, tiene que usar estos divisores.
Alterando los valores de los multiplicadores y divisores de frecuencia se puede realizar el overclocking y underclocking, así como el escalado dinámico de frecuencia, etc.
Distribución dentro de los chips
Dentro de la CPU, aunque también sería válido para un SoC o una GPU, etc., se tiene que distribuir la frecuencia de reloj de una forma muy particular. En las primeras CPUs y MCUs, al ser simples, se introducía la frecuencia de reloj a través de un pin. En cambio, en las complejas unidades actuales, esto no sería posible, por eso se distribuye en forma de árbol o de malla, como se puede ver en el gráfico anterior. De esta forma, se garantiza tener una señal sin retrasos en todos los puntos.
Ten en cuenta que si se distribuye desde una sola línea, puede que haya retrasos en las ondas que llegan a partes más alejadas del chip, lo que significaría introducción de errores, ya que no estarían sincronizadas. Para evitar esto, se emplean esta otra forma de distribuir la señal de forma más pareja, evitando errores.
Por ejemplo, imagina un registro de desplazamiento activado por señal de reloj. Y que esta señal llega de forma más adelantada o atrasada (clock skew) que a otra unidad funcional que tiene que coger los valores de este registro. Esto haría que cambiase el estado y la unidad posterior tomase valores inapropiados.
Clock skew
El «clock skew» o «desfase de reloj» es un fenómeno que ocurre en sistemas electrónicos y se refiere a la diferencia de tiempo que existe entre la llegada de la señal de reloj a diferentes partes del circuito o sistema. En otras palabras, es la variación en el tiempo de llegada de la señal de reloj a los distintos elementos del sistema, como los registros, flip-flops o puertas lógicas.
El clock skew puede ser causado por diversas razones, como la longitud de las rutas de propagación del reloj, la capacidad de carga de los elementos del circuito, la variación en las propiedades de los cables y conexiones, y la interferencia electromagnética, entre otros factores. Estos factores pueden provocar que algunas partes del circuito reciban la señal de reloj antes que otras, lo que puede llevar a problemas de sincronización y a errores en el funcionamiento del sistema.
El clock skew es especialmente importante en sistemas de alta velocidad y en procesadores multinúcleo, donde la sincronización precisa de las operaciones entre los diferentes núcleos y componentes es crucial para el rendimiento y la estabilidad del sistema. Un clock skew excesivo puede llevar a problemas como violación de tiempo de retención (hold time violations), setup time violations, y otros problemas de temporización que afectan negativamente el funcionamiento del sistema.
Para mitigar los efectos del clock skew, se utilizan técnicas de diseño como el enrutamiento simétrico de las líneas de reloj, la inserción de buffers para compensar las diferencias en las rutas de propagación, el uso de técnicas de clock tree synthesis para equilibrar la distribución del reloj, y el ajuste del diseño para reducir las variaciones de tiempo de propagación en el sistema.