Transferencia de datos entre FFs en una CPU

1

Estaba en una conferencia sobre organización de computadoras y cuando escribimos lo que hace la CPU durante una instrucción adicional (como instrucciones micro), algo me hizo pensar.

No entendí cómo dejamos que uno de los FFs salga al bus interno y le pedimos a otro FF que retenga los datos. Si enviamos las señales de control en el mismo ciclo, ¿cómo esta última enclava los datos en? ¿al mismo tiempo? ¿No está violando la configuración y el tiempo de espera?

    
pregunta EralpB

2 respuestas

3

No necesariamente. Puntos de bonificación por saber que una entrada a un FF tiene como configuración y tiempo de espera la especificación, por cierto.

Pero para muchos diseños de FF, el tiempo de espera puede ser de 0 ns, es decir, no es necesario mantener los datos durante CUALQUIER tiempo después del borde del reloj. (Al diseñar el FF, puede garantizar esto; solo asegúrese de utilizar transistores más lentos o cables más largos en la entrada, y más rápido en el reloj).

Ahora el reloj retiene los datos, pero ese proceso toma algo de tiempo, llamado retardo de propagación o retardo de salida del reloj, y luego el cable al siguiente FF agrega un retardo propio. Por lo tanto, el siguiente FF no ve que su entrada cambie hasta DESPUÉS de este momento, ciertamente mayor que 0 ns, por lo que es seguro. (¡Si no es mayor que el tiempo de espera real, ESTÁ en problemas!)

El tiempo de configuración es menos importante en esta etapa; ya que la salida FF anterior cambia justo después del borde del reloj, tiene casi un ciclo completo para llegar hasta aquí. Calcule clock cycle time - clock-output delay - wire delay - setup time y si el número es positivo, eso también es seguro.

El tiempo de configuración importa cuando empiezas a agregar puertas o cables largos entre FFs; Estos añaden más retraso. Entonces, cuando esa suma se convierte en cero, ¡el reloj es demasiado rápido!

(Hay otro aspecto; los pulsos de reloj llegan a diferentes FF en diferentes momentos; para un cálculo preciso, debe tener en cuenta este "sesgo de reloj" en los cálculos de configuración y tiempo de espera).

Así que no estás equivocado; Estos son problemas reales pero tienen soluciones. Y el diseño del chip implica MUCHOS de estos cálculos (en su mayoría automatizados por las herramientas, en el diseño de FPGA), llamados "análisis de tiempo estático".

    
respondido por el Brian Drummond
0

He diseñado microprocesadores antiguos (6502, Z-80, 8085) y el truco para la transferencia de datos es que utilizan relojes de dos fases. Algunos flip flops se actualizan durante la primera fase, y los otros se actualizan durante la segunda fase. El primer conjunto de flip flops solo depende de los valores del segundo conjunto y viceversa. Por lo tanto, no tiene un problema con las entradas y salidas de flip flop que cambian al mismo tiempo.

Los flip flops genuinos son bastante raros en estos chips debido a su relativa complejidad. En su lugar, las CPU utilizan mucha lógica dinámica con transistores de paso; esto mantiene los valores con capacitancia de cable en lugar de un pestillo. Y hay una gran cantidad de pestillos de dos inversores, con transistores de paso que controlan las actualizaciones.

    
respondido por el Ken Shirriff

Lea otras preguntas en las etiquetas