¿Cómo se relacionan exactamente las velocidades de reloj de las computadoras con las velocidades de operación?

Me preguntaba sobre esto el otro día cuando le estaba explicando binario y hexadecimal a un amigo mío y surgió esto. La pregunta es algo como esto:

¿Cómo se relacionan exactamente las velocidades de ejecución de instrucciones con las velocidades de reloj en las computadoras modernas?

Por ejemplo, digamos que un procesador de computadora usa una señal de reloj de 1 MHz. El procesador ejecutará operaciones en el borde de ese reloj (en el borde negativo si no me equivoco), pero esto no significa que se ejecutará una instrucción completa para cada ciclo de reloj.

Para tener un ejemplo más específico, si un procesador Intel x86 tiene un comando MOV BX, 45 , asumo que se necesitarán varios ciclos de reloj para completar esto, ya que se debe generar el número 45 y se debe ubicar el registro BX. etcétera. Tal vez este podría ser un ciclo de reloj único, ya que es un valor inmediato que se mueve a un registro, pero espero que esto explique mi pregunta. Tal vez un comando JNE sería un mejor ejemplo.

Además de esto, existe el ciclo de obtención-descodificación-ejecución que reduciría la proporción de instrucciones por reloj a menos de 1:1, ¿es correcto? Por favor, perdóname si no entiendo completamente cómo funciona esto. Estoy muy interesado en él y sé que muchos de ustedes saben bastante al respecto. Por favor, siéntase libre de arrojar algo de luz sobre mi ignorancia: D

Muchas gracias

cris

La CPU de cuatro núcleos de 1800 MHz funciona un poco más rápido en mi computadora portátil.
Ingrese a los microcontroladores y pronto comprenderá la relación.
Su desafortunado ejemplo X86 tiene un ciclo de reloj complejo (como se describe en la respuesta de @ pjc50). Algunos microcontroladores simples tienen mucha menos complejidad de ciclo de reloj; muchos casi logran su relación de instrucción por reloj de 1: 1. Falta un eslabón: un oscilador maestro (a veces derivado de un cristal) genera la temporización del ciclo. A menudo es un múltiplo entero o un submúltiplo de la frecuencia del cristal y varía de un chip a otro. Tienes que leer atentamente una hoja de datos.
Piense en la velocidad del reloj como qué tan rápido presiona los dígitos en una calculadora, dándose cuenta de que a veces tiene que esperar un resultado entre pulsaciones, como 63!por ejemplo...

Respuestas (1)

Supongo que tomará varios ciclos de reloj completar esto

Es bastante complicado, pero consulta: https://stackoverflow.com/questions/692718/how-many-cpu-cycles-are-needed-for-each-assembly-instruction

Hay básicamente tres factores a considerar para una explicación simple:

  • Ciclos por instrucción. Esto se especificará en el manual del procesador por instrucción. Puede ser tan bajo como 1.
  • Instrucciones por ciclo. Gracias al diseño y las canalizaciones "superescalares", puede tener varias instrucciones en procesamiento al mismo tiempo y, potencialmente, "emitir" más de una.
  • Operaciones por instrucción. Gracias a los conjuntos de instrucciones SIMD, una instrucción puede operar en una gran cantidad de valores en un solo ciclo.

Los oleoductos complican los tiempos para las instrucciones de "sucursales" como JNE. Es posible que descubra que se necesita un ciclo para no bifurcar y cien ciclos para tomar la bifurcación, a menos que el predictor de bifurcación haya adivinado correctamente, en cuyo caso esos costos son al revés.

Los fallos de caché también tardan bastante tiempo.