No soy nuevo en la arquitectura de computadoras, pero solo tengo experiencia académica con la implementación de microarquitectura.
Escuché y leí esto muchas veces, pero nunca me molesté en entender la declaración: algunas instrucciones se completan en 1 o 2 ciclos de reloj, mientras que las instrucciones más complejas dicen que el número entero o el punto flotante se completan en 2, 4, 6 ciclos de reloj, etc. o cargar/almacenar en 80-100 ciclos de reloj debido a la memoria lenta.
Ahora estoy seguro de que la mayoría de los procesadores, ya sean integrados o de escritorio, tienen pocas etapas de canalización, digamos desde 5 etapas hasta 30 etapas. Por lo tanto, la latencia de cada instrucción debe ser igual a la profundidad de la canalización o al número de etapas de la canalización. Además, el rendimiento de un solo procesador escalar de canalización puede ser de un máximo de 1 IPC (Instrucciones por ciclo). Pero, ¿cómo pueden terminar algunas instrucciones en 1, 2 o 4 ciclos de reloj para un procesador con tubería de 10 o 12 etapas? ¿Alguien puede explicarme eso?
PD: Lo único que puedo entender es que tal vez algunas etapas estén marcadas como una etapa de ciclo múltiple, como generalmente se hace durante el STA y el cierre de tiempo. ¿Y que están tratando de decir que la ejecución de la instrucción toma 1cc, 2cc, 4cc, etc. en esa etapa de ciclo múltiple en particular?
En general, el tiempo de ejecución de la instrucción no se mide desde que ingresa a la canalización hasta que sale, sino desde el momento en que pasa por algún punto arbitrario de la canalización hasta el momento en que la siguiente instrucción pasa por ese punto. Si ninguna instrucción tarda más de, por ejemplo, 20 ciclos en recorrer la tubería, medir el tiempo que tarda una secuencia de instrucciones en pasar por algún estado arbitrario arrojará un resultado que está dentro de los 20 ciclos del tiempo real requerido para ejecutar toda la secuencia desde Empezar a acabar. Dado que los programadores generalmente están mucho menos interesados en el tiempo para ejecutar una sola instrucción que en el tiempo requerido para ejecutar secuencias que contienen muchas instrucciones (a menudo miles, si no más),
La longitud de la tubería es solo el retraso entre la entrada y la salida.
Ciclos para completar es la cantidad de tiempo que necesita por operación.
Esto no es lo mismo, uno es "retraso" y el otro es "velocidad". Por lo tanto, es perfectamente posible tener tuberías y múltiples ciclos por instrucción en cualquier proporción.
Suponga que tiene una canalización de 5 etapas y necesita 3 ciclos por instrucción. Esto significa que los siguientes dos ciclos después de aplicar una entrada, la unidad no está lista para aceptar una nueva entrada. Además de eso, hay un retraso de 5 ciclos debido a la tubería. Por lo tanto, se necesitan 8 ciclos desde que se aplica la entrada hasta que el resultado está disponible. Pero con respecto al rendimiento, solo se necesitan 3 ciclos por operación. Es decir, aunque el primer resultado no se complete por completo, en el tercer ciclo se puede aceptar una nueva entrada y se inicia el cálculo (y los resultados se obtienen 8 ciclos después).
Con una tubería, está haciendo cosas en paralelo (a costa de la demora), que de otro modo tendría que hacer en serie (más ciclos por operación).
Me parece imposible tener una instrucción que pueda pasar por todas las etapas de la canalización (Obtener -> Decodificar -> ...) en uno o dos ciclos de reloj. El "tiempo de ejecución" como lo citó es, probablemente, algún tipo de jerga.
La mejor suposición que puedo hacer sin poder ver todo el contexto de la declaración que lo desconcierta, es que estos números representan el "bloqueo" de la tubería cuando se ejecuta la instrucción de algún tipo. La otra forma de decirlo es que este número representa el rendimiento teórico de la canalización si solo se ejecutaran las instrucciones de este tipo.
Por ejemplo:
En las CPU modernas de canalización múltiple, no sirve de mucho el "tiempo de ejecución de instrucciones" sin procesar solo. El empleo de almacenamiento en caché de varios niveles, ejecución fuera de orden, bifurcación predictiva y muchos más, complica el análisis y mitiga la penalización de detener una sola canalización. En ocasiones esta penalización puede reducirse a cero.
Sí, la fuente de este estancamiento de la canalización es el hecho de que algunas instrucciones pueden tener etapas de "ciclo múltiple". Sin embargo, el uso de "ciclo múltiple" en este contexto no siempre es el mismo que el uso de "ciclo múltiple" en el contexto de las herramientas STA. La etapa multiciclo de canalización puede ser una etapa combinatoria que requiere pocos ciclos de reloj (en cuyo caso también debe definirse como multiciclo para herramientas STA), o puede ser una etapa secuencial que requiere más de un ciclo de reloj para funcionar. completo (en cuyo caso todavía necesita cumplir con el tiempo como una sola etapa del ciclo).
Wouter van Ooijen
el fotón
nurabha