¿Qué sucede si el ciclo del reloj se reemplaza con un alto voltaje constante en un procesador?

¿Cambiarían los datos en los registros a la velocidad de la luz y tal vez se volverían inestables/indefinidos, o el procesador dejaría de cambiar de estado por completo?

Esta publicación dice :

Para dar tiempo a todas las puertas para cambiar de estado de toda la cadena, usamos un reloj. El reloj es una entrada a la CPU que cambia entre 0 y 1 (la señal baja a la señal alta a la señal baja, etc.), que impulsa a la CPU a realizar operaciones.

Este artículo dice :

Si la velocidad del reloj aumenta a 100 GHz, un ciclo será de 0,01 nanosegundos... ¿Qué sucede cuando se viola esta limitación de tamaño? Lo que sucede es que ciertas partes de su circuito están en el ciclo 'actual' y otras partes están en el ciclo 'anterior'. Se vuelve realmente difícil manejar tales sistemas distribuidos.

Pero luego esta publicación dice :

simplemente se detendrá

Así que estoy confundido con el resultado.

Si me imagino un simple timer registerconectado a un sumador, y cada ciclo de reloj obtiene sus datos ++1, ¿no significa un alto constante que los datos del registro recorren el sumador y regresan a sí mismos a la velocidad de la luz, sumándose a sí mismos indefinidamente? en lugar de parar?

exactamente lo que suceda depende de si se trata de un procesador dinámico o estático, pero de cualquier manera no hará nada útil.
light speedno es una medida de un intervalo de tiempo, a menos que se especifique una distancia
Si detiene el reloj, detiene el procesador y cualquier otra cosa que dependa de ese reloj.
@ user1850479 esta es la parte que estoy tratando de entender con más detalle. ¿A qué se alimenta el reloj (0 o 1)? ¿Es una entrada para que las puertas cambien potencialmente su estado en función de sus otras entradas?
Puede pensar en el reloj como una entrada a las puertas que les dice que es hora de actualizar. Si dejas de decirles que actualicen, no harán nada.
Debe resistir la tentación de poner una respuesta de una palabra "Nada".
En el libro Code: The Hidden Language of Computer Hardware and Software de Charles Petzold de 1999, se ofrece una explicación realmente buena (aunque muy larga) de los conceptos básicos de cómo el reloj impulsa un circuito digital. Recomiendo encarecidamente este libro si desea aprender cómo todo funciona desde el primer principio.
Es perfectamente posible hacer un sistema digital secuencial asíncrono usando el protocolo de enlace entre subsistemas. No se requiere reloj maestro. Sin embargo, suele ser más lento y más complicado que usar un reloj maestro, por lo que es una técnica que rara vez se usa.
Las CPU reales como la de su escritorio detendrán el reloj en núcleos inactivos todo el tiempo. Es una función de ahorro de energía muy común.

Respuestas (5)

Sus dudas surgen de la falta de comprensión de los conceptos básicos sobre las redes lógicas secuenciales síncronas , de las cuales las CPU modernas y los bloques básicos relacionados, como los contadores, son solo ejemplos particulares.

Como alguien más ya señaló, dichas redes pueden cambiar de estado solo como consecuencia de un borde de reloj, es decir, una transición de señal de reloj.

Le sugiero que investigue el comportamiento básico de los flip-flops activados por borde (es decir, memoria estática de 1 bit, simplificando un poco :-) y otros conceptos básicos sobre los requisitos de sincronización de la red síncrona, como el tiempo de configuración, el tiempo de espera y el retraso de propagación .

EDITAR (Para abordar algunos comentarios de OP @Dan)

  • Sigues mencionando la "velocidad de la luz", pero realmente deberías sacar ese término de tu sistema.

    La velocidad de la luz es una "velocidad" en sentido físico, es decir, una relación entre el espacio y el tiempo. La velocidad describe qué tan rápido se mueven los cuerpos físicos. En lógica digital hablamos de velocidad de procesamiento , es decir, cuántos bits por segundo se procesan.

    Relacionar los dos no es trivial en absoluto (un grupo de cargas en movimiento no es necesariamente lo mismo que un grupo de bits "en movimiento").

  • La lógica asíncrona (es decir, "sin reloj") es teóricamente más rápida, porque los dispositivos pueden reaccionar sin esperar el borde del reloj. Esto no significa que el único dispositivo sea "infinitamente" rápido. Con la misma tecnología y la misma complejidad de circuito, deshacerse del reloj simplemente le ahorra el tiempo que algunos de los dispositivos con reloj pierden esperando el borde del reloj cuando ya tienen sus entradas "listas". Esto no aumenta la velocidad con la que un solo transistor cambia de estado. Por lo tanto, aún tendrá retrasos en la propagación. ( https://en.wikipedia.org/wiki/Asynchronous_circuit#Asynchronous_circuits ).

    OTOH, el diseño de un sistema asincrónico complejo es una pesadilla de tiempo, ya que cualquier subsistema puede reaccionar en cualquier momento, y aún debe cumplir con los requisitos de configuración y tiempo de espera.otros bloques cambiarán sus salidas ya que no tienes señal de sincronización. Además, seguirás necesitando sincronización , ya que algunas tareas tendrán que esperar a que se completen otras. Sin señales de reloj, esto será mucho más complejo.

    Puede encontrar esto interesante:
    https://en.wikipedia.org/wiki/Asynchronous_circuit#Asynchronous_CPU .

Entonces, el reloj (activado por flanco positivo o negativo) es como un interruptor de encendido y apagado. Justo cuando se enciende (o se apaga), tiene lugar una acción y el resultado se almacena en una memoria. El valor del reloj también podría usarse para derivar el valor del resultado, pero el punto principal es actuar como un interruptor de encendido/apagado. Y lo hace. Para dar tiempo a todas las puertas a cambiar de estado de toda la cadena, usamos un reloj . Supongo que ES posible diseñar circuitos secuenciales con memoria sin un reloj, pero se vuelve difícil de diseñar como dice esta publicación electronics.stackexchange.com/a/66065 , ¿entonces el diseñador tomó el camino más fácil?
es decir, ES posible diseñar circuitos secuenciales con memoria que funcionen a la velocidad de la luz (sin relojes), pero es más fácil decirlo que hacerlo. Sé que los circuitos combinacionales (como una puerta OR simple en un chip) no tienen reloj y solo le brindan una salida directa basada en la entrada.
Para agregar, el reloj también podría impulsar el movimiento de bits entre los registros de desplazamiento o usarse en un temporizador. Supongo que algunos de estos se pueden hacer sin un reloj, pero como explica el enlace anterior, se complica.
Sí, la "lógica asíncrona" es una cosa. No, no es la velocidad de la luz: la principal limitación es la capacitancia que presentan los cables y las puertas accionadas. Consulte "Retraso de Elmore" para obtener un modelo simplificado. Para obtener más información sobre async, visite async.org.uk
Correcto, el retraso de propagación es algo real, las salidas de las puertas no se asientan en la memoria instantáneamente, por lo que los relojes hacen que todo esto sea más fácil de manejar al darles tiempo para que se asienten. También ayuda con otros aspectos del diseño de circuitos, es decir, cómo funcionan los registros de desplazamiento "cambiando" bits cada reloj.
@pjc50: Un problema mayor con la lógica asincrónica es que no tiene una forma "agradable" de manejar las condiciones de carrera. Si dos tareas deben hacer algo con un bus compartido, será difícil evitar requerir que X espere a Y incluso si X hubiera estado listo primero, o que Y espere a X incluso cuando Y hubiera estado listo primero. El uso de la lógica síncrona permite garantizar que tanto X como Y estén de acuerdo en que Y estaba listo antes que X.
@Dan El término "retraso de propagación" combina dos efectos. Hay un retraso en la línea de transmisión, relacionado con la velocidad de la luz (en el material particular, que NO es lo mismo que C, la velocidad de la luz en el vacío). Y el tiempo de rampa, el tiempo que tarda una salida de transistor en cambiar entre dos voltajes. Normalmente, los elementos del circuito están lo suficientemente cerca entre sí como para que el tiempo de subida y bajada sea el factor dominante dentro del procesador de una computadora. Salga de ese chip, a una red de comunicaciones, y los efectos de la línea de transmisión se vuelven muy importantes.

El reloj debe hacer la transición, de bajo a alto, y repetir, en un patrón regular.

Son estas transiciones las que impulsan los cambios en la lógica, no el alto nivel. Sin transiciones = sin cambio de lógica. Entonces, sin transiciones, dejará de funcionar.

Esto incluye voltaje "extra alto" (es probable que se dañe).

Si solo están involucrados elementos estáticos , entonces la operación parecerá "congelarse" por completo durante toda la duración de la eliminación del reloj. Reinicie el reloj y continuará exactamente donde lo dejó (como si no hubiera pasado el tiempo).

Si hay elementos dinámicos involucrados (probablemente hoy en día, como temporizadores de vigilancia, interrupción en el cambio, actualización de la memoria DRAM, etc.), es probable que algo se pierda o se corrompa durante una pausa prolongada del reloj. En el caso de pérdida de DRAM, el código que se está ejecutando actualmente será basura, por lo que el procesador fallará en poco tiempo al intentar ejecutar código basura.

Son las transiciones del reloj las que le indican al procesador que "haga el siguiente paso". La transición o borde bajo-alto (heredado), y también el borde alto-bajo (moderno) ahora hacen algo.

En los procesadores modernos de hoy, múltiples núcleos con múltiples subprocesos significan que cada ciclo de reloj está haciendo cientos, incluso miles de cosas en paralelo en cada borde de reloj.

Se deben usar los bordes del reloj, porque son secuenciales , y estos bordes deben estar separados por una cierta cantidad de tiempo, para permitir que el "paso" se propague por completo o se complete antes de que comience el siguiente. "Overclocking" es aumentar la velocidad del reloj por encima del valor normal. La frecuencia de reloj típica incluye un margen de seguridad, por lo que generalmente es posible aumentarlo un poco. Aumentarlo hace que el procesador trabaje más, por lo que normalmente necesita un ligero aumento de voltaje para seguir funcionando. Pero aumentar demasiado la frecuencia del reloj eventualmente violará estos tiempos de paso, especialmente en todos los rangos de temperatura posibles.

Pero di un ejemplo de "temporizador". ¿Por qué se detendría en lugar de operar a la velocidad de la luz (y potencialmente corromper todos sus datos y entrar en un comportamiento indefinido)? Alto constante significa que las cosas se están moviendo en algún circuito.
@Dan: un contador síncrono (como el que encontraría en su registro de temporizador) no cuenta cuando el reloj está alto (o bajo). Cuenta cuando ocurre un borde de reloj (ya sea cuando el reloj cambia de bajo a alto o de alto a bajo). De lo contrario, no funcionaría en absoluto: el reloj permanece alto durante medio ciclo completo y bajo durante la otra mitad. "Contaría a la velocidad de la luz" como dices durante la mitad del ciclo.
Entonces, una operación podría ocurrir en cualquier borde (alto o bajo), es decir, la CPU no funciona solo cuando está alta. El reloj alto o bajo es una entrada adicional para los latches/transistor y su estado podría cambiar en cualquier borde dependiendo del tipo de puertas, es decir, Y/O/NOR, etc. Un alto o bajo constante significa que hacemos la operación y estamos permanentemente atascados en ese estado. ¿Es todo esto correcto?
@Dan leyó sobre chanclas. Estos son los componentes básicos de la lógica digital secuencial. El reloj es un poco como una máquina con una manivela. Giras el mango y algo sucede. Sin manivela y no pasa nada.
Sí, en un sistema lógico ideal con un reloj, los cambios de estado solo ocurren en el borde del reloj. Entonces, si el reloj se detiene, el sistema permanece en su estado actual para siempre, incluso si las entradas cambian. Aunque muchos sistemas tienen reinicios asíncronos que funcionan independientemente del reloj.
Correcto, también me refiero a las chanclas y los componentes más grandes formados por ellas. Solo quiero confirmar que las operaciones ocurren en ambos bordes, alto o bajo (no solo alto). El reloj no es un interruptor para activar o desactivar el circuito. El reloj es un patrón de 0 y 1 que se utiliza como entrada para todos los componentes. Entonces, digamos que el reloj es 1, y otro estado de entrada en un flip flop es 1, ahora una cierta puerta AND también generará 1, de lo contrario, generará 0 (generará uno de estos en alto o bajo) y esto sucede en cada pulso alto y bajo, como esta imagen: i.imgur.com/8nvLI1Y.png , ¿estoy en lo correcto?
@dan, aunque el circuito que muestra es lógicamente correcto, no veo cómo se aplica en este contexto. Su circuito es un retraso combinatorio. Busque en Google cómo hacer un contador con chanclas: hay dos técnicas básicas.
Disculpe la confusión, la imagen es solo una captura de pantalla de un video de YouTube que explica este concepto, pensé que podría ser útil.
@rdtsc estoy buscando ejemplos más específicos que solo clock helps with transitions. ¿Como hace eso? el reloj es un patrón continuo de 1 y 0. ¿Los 1 y 0 se introducen en las puertas como una de sus entradas para cambiar potencialmente su estado en función de sus otras entradas?
Es la transición de 1 a 0 y/o de 0 a 1 la que está haciendo el trabajo. Simplemente sentarse en uno o cero significa que no pasa nada.
@Dan "alimentó las puertas": sí ... dentro del flip-flop. No cualquiera de la otra lógica combinacional. Puede pensar en un flip-flop como un par de pestillos, uno de los cuales está habilitado en la mitad del ciclo y el otro en la otra, por lo que solo puede cambiar su salida durante la transición.
@Dan Alto y bajo no son bordes. Las transiciones de bajo a alto y de alto a bajo son bordes. Las transiciones son donde suceden las cosas. ¡Los estados alto y bajo en sí solo son relevantes en el sentido de que necesita al menos dos estados para tener transiciones!
@Dan Todavía te estás perdiendo el punto. En realidad, llamarlo "reloj" debería dejar esto claro, porque el voltaje que sube y baja es idéntico en todos los sentidos a cómo el péndulo de un reloj se mueve hacia atrás y hacia adelante. Si evitas que el péndulo de un reloj vaya hacia atrás y hacia adelante, ¿las manecillas siguen moviéndose para contar los segundos? Claramente no lo hacen. Y la electrónica del temporizador tampoco sigue moviéndose si el voltaje deja de ir hacia adelante y hacia atrás.
@Graham He agregado mis pensamientos finales sobre esto en este comentario: electronics.stackexchange.com/a/605734/305610
Dado que esta respuesta también menciona consideraciones dinámicas, me gustaría agregar que las CPU a menudo tienen PLL internos, por lo que pausar la fuente del reloj externo en realidad no detendrá el reloj interno, sino que hará que se desvíe de la frecuencia.

Por lo general, no me gustan las analogías del agua con la electricidad, pero...

El reloj en lógica síncrona es como una bomba de agua de pozo. La acción de bombeo no es continua, ocurre en ráfagas. Cuando levanta el brazo de la bomba, la bomba inhala un poco de agua desde abajo, y cuando fuerza el brazo de la bomba hacia abajo, expulsa el agua río arriba. Mueva el brazo de la bomba hacia arriba y hacia abajo repetidamente, y puede mover una gran cantidad de agua río arriba. Detente con el brazo hacia arriba, y no pasa nada más. Detente con el brazo hacia abajo, y no pasa nada más.

También existe una velocidad de bombeo óptima (esto también es cierto para los circuitos lógicos síncronos). Pulsar la bomba demasiado lentamente, pierde impulso, por lo que la presión y la velocidad del agua no alcanzan su máximo potencial. Pero pulse la bomba demasiado rápido y el agua simplemente no puede moverse hacia el impulsor lo suficientemente rápido. La metáfora se rompe un poco, porque los circuitos no tienen viscosidad...

En los circuitos sincrónicos , tenemos los llamados circuitos digitales, que en realidad son circuitos analógicos que pretenden seguir las reglas de diseño digital limpias y agradables. Los circuitos digitales tienen una característica llamada " inmunidad al ruido".": un nivel lógico alto o bajo es un rango de voltajes. En lo que respecta a un diseñador digital, no hay una diferencia significativa entre un alto lógico de 2,6 V y 2,8 V, siempre que esté dentro del rango de voltaje VIH la entrada está garantizado que lo tratará como un nivel lógico alto. Pero el circuito subyacente está hecho de transistores, y cada vez que cambia entre niveles altos y bajos, tiene que cambiar todos los voltajes intermedios. Los circuitos reales no cambian instantáneamente. Entonces, se requiere un período finito de tiempo para que la señal se establezca en el valor correcto.Ese período de tiempo se denomina retardo de propagación .. Sume todos los tiempos de retardo de propagación de todos los diversos elementos del circuito lógico combinacional por los que tiene que pasar la señal, y eso determina el período de reloj más corto (más rápido) que el circuito puede tolerar. Operar a una velocidad de reloj más rápida no permitirá suficiente tiempo para que la lógica combinacional interna alcance siempre el valor correcto. Siempre tiene algún valor, simplemente no se garantiza que sea el valor correcto hasta después de que haya pasado todo el tiempo de retardo de propagación.

Hay muchos factores que determinan el tiempo de retardo de propagación requerido. Parte de esto depende de los valores de diseño nominales, como la carga de capacitancia y la resistencia del cable, y cosas por el estilo. Esos factores dependen de las leyes de la física, la forma y las dimensiones de los materiales y otras características materiales y la temperatura; por lo que podemos estimar el retraso de propagación. Pero en los dispositivos fabricados existen pequeñas variaciones de una unidad a otra. En la década de 1970, estas tolerancias de fabricación no eran tan estrictas como lo son hoy en día, pero aún existe cierta cantidad de variación impredecible de un dispositivo a otro. Entonces, esto llevó a una tendencia de aficionados a la informática llamada "overclocking", que es en gran medida lo que parece estar preguntando.

Los entusiastas del overclocking básicamente corrieron un pequeño riesgo al modificar su propia computadora personal para que funcionara a una velocidad de reloj más alta, por ejemplo, con una CPU de 6 MHz a 8 MHz. No está garantizado que funcione. Y tampoco está garantizado que falle de una manera obvia, lo que podría ser peor que si simplemente no funcionara de inmediato. Si estaba ejecutando una gran simulación, y hubo un pequeño error de cálculo no detectado que solo ocurre después de que ha estado haciendo un montón de grandes cálculos y obtuvo un punto caliente, entonces es posible que no sepa que obtuvo un mal resultado. Por otro lado, si solo lo estuvieras usando para jugar, no pasa nada. Sin embargo, incluso un truco como el overclocking todavía tiene que proporcionar una entrada de reloj que cambia constantemente. Simplemente conectar la entrada del reloj siempre baja o siempre alta no es algo mágico,

Aquí hay un poco más de detalles sobre en qué entra realmente la señal del reloj. La idea más simple de un circuito lógico síncrono sería una máquina de estados finitos, hecha de algunos flip-flops "D" y algunas puertas lógicas. Todos los flip-flops D reciben la señal del reloj. Las salidas de los flip-flops impulsan las entradas del laberinto de puertas lógicas, y las salidas del enredado lío de la lógica retroalimentan las entradas de los flip-flops D. Entonces, hay una especie de ciclo de retroalimentación, pero los flip-flops interrumpen ese ciclo de retroalimentación al imponer una disciplina de tiempo. El flip-flop prácticamente ignora lo que sucede en su entrada de datos, hasta que justo en el borde ascendente del reloj, y luego, de repente, las salidas cambian para coincidir con el valor de las entradas. Esto sucede muy rápidamente, idealmente es como tomar una instantánea de la entrada y controlar ese valor continuamente durante el resto del ciclo del reloj. Si el flip-flop siguiera actualizando sus salidas para coincidir con sus entradas continuamente mientras la entrada del reloj estuviera alta, eso no sería un flip-flop; sería un pestillo transparente. Y necesitamos flip-flops, no pestillos transparentes, para construir máquinas de estado.No hay cambio en el flanco descendente del reloj. Eventualmente, la lógica combinacional determina un nuevo valor para las entradas del flip-flop. Pero la única forma en que la máquina "sabe" que el nuevo valor ha llegado, es que ocurra el flanco ascendente del reloj. Eso es lo que impulsa el proceso de actualización del valor del registro, para que el resto de la lógica pueda comenzar a calcular el siguiente paso. Este es el principio básico de funcionamiento de todas las máquinas de estados finitos y todas las demás lógicas síncronas.

El reloj sincroniza el funcionamiento de todos los componentes internos de cualquier CPU. Si se detiene (o se eleva constantemente), la CPU también debería detenerse. Al menos el microcontrolador 8051 actúa así. Definitivamente no "overclockeará" la CPU (es decir, no funcionará tan rápido como sea posible). Todos los efectos secundarios desagradables como la limpieza/cambio de registros, estado indefinido, etc. también pueden ocurrir.

Reloj detenido: si los registros y la lógica son estáticos, la máquina mantiene su estado. Si son dinámicos, el estado eventualmente se corromperá o se perderá.

(La lógica dinámica se usa en algunas arquitecturas para reducir el área. Al igual que la DRAM, debe estar ciclando para actualizar su estado. Era más común en la era NMOS, aunque todavía se usa en CMOS).

Reloj funcionando más allá de los límites de la máquina: funcionamiento inestable, ya que los tiempos de configuración de los flip-flops no se cumplen, por lo que su estado no es predecible.

El tiempo de ciclo básico debe ser no menor que el peor de los casos: reloj flop a salida + retardo de enrutamiento + configuración para la siguiente etapa flop.

También hay alguna restricción en el reloj alto y bajo, ya que los flops están compuestos por pestillos que se activan en niveles de reloj opuestos: necesitan un tiempo de pulso mínimo para propagarse.