lunes, 8 de agosto de 2011

CPU - Ciclos de Reloj

El microprocesador se conecta a un circuito, normalmente basado en un cristal de cuarzo, capaz de generar pulsos a un ritmo constante, de modo que genera varios ciclos (o pulsos) en un segundo. Este reloj, en la actualidad, genera miles de MHz. El reloj es la señal utilizada para sincronizar las cosas dentro de una computadora. Todos los tiempos se miden en términos de ciclos. Por ejemplo, una memoria con una latencia de 5, significa que ésta tardará cinco ciclos completos para comenzar a entregar los datos.

Dentro de un micro. Todas las instrucciones demoran un cierto número de ciclos para ejecutarse. Por ejemplo, dada una instrucción puede demorarse siete ciclos para ejecutarse. Sin importar el micro, lo interesante es que el procesador sabe cuántos ciclos tomará cada instrucción (ROM con microcódigo). Así, si éste tiene dos instrucciones a ejecutar y sabe que la primera demorará siete ciclos, éste automáticamente comenzará la ejecución de la próxima instrucción en el octavo ciclo.

Obviamente, esta es una explicación genérica, para un micro con solo una unidad de ejecución, pero hoy día los micros son superescalares. ¿Qué tiene que ver el reloj con la performance? Pensar que el reloj y la performance son la misma cosa es el error conceptual más común sobre procesadores. Si se comparan dos procesadores idénticos, pero uno corriendo a una frecuencia de reloj mayor. En este caso, el de la frecuencia más alta, tendrá u tiempo de ciclo más corto, las instrucciones se ejecutarás en menor tiempo (misma cantidad de ciclos, pero esto llevan menos tiempo), por lo tanto la performance será más alta.

Pero qué hay si los procesadores a comparar son diferentes, no necesariamente el de mayor frecuencia tendrá una performance mejor. Si se toman dos procesadores con diferentes arquitecturas – por ejemplo, dos fabricantes distintos, como Intel y AMD – las cosas dentro del micro son completamente diferentes. Como se mencionó, cada instrucción toma un cierto número de ciclos de reloj para ejecutarse. Se puede decir que el procesador “A” se toma siete ciclos reloj para ejecutar una instrucción dada, y que el procesador “B” toma cinco ciclos en ejecutar la misma instrucción.

Si ambos corren a la misma frecuencia de reloj, el procesador “B” será más rápido, debido a que éste puede procesar la instrucción en menos tiempo. Para los micros modernos hay más cosas en juego para mejorar la performance, como procesadores con diferentes unidades de ejecución, diferentes tamaños de cache, diferentes formas de transferir datos dentro del micro, diferentes maneras de procesar las instrucciones dentro de las unidades de ejecución, diferentes frecuencias de reloj para el mundo exterior, etc… A medida que la frecuencia del reloj se tornan más altas, surge un problema.

La mother donde se aloja el micro no podría trabajar utilizando la misma frecuencia de trabajo que el micro. Si se mira una mother, se podrán observar varias pistas o caminos. Esas pistas son cables que conectan varios circuitos de la computadora. El problema es que con frecuencias muy altas, esos cables comienzan a comportarse como “antenas”, así las señales, en lugar de llegar al otro extremo del cable podrían simplemente desvanecerse, ya que se transmitirían como señales de radio.