Fórmula de cálculo del ciclo de reloj MIPS

ingrese la descripción de la imagen aquí

Cuántos ciclos de reloj tomará la ejecución de este segmento en la canalización simple sin reenviar ni omitir cuando el resultado de la instrucción de bifurcación (nuevo contenido de PC) esté disponible después de la etapa WB. Muestre el tiempo de un ciclo de bucle en la tabla a continuación.

Esta es la pregunta y aquí está la respuesta en la segunda foto; sin embargo, no entendí cómo obtuvimos la cantidad de ciclos de reloj para la ejecución del segmento en el procesador segmentado. Mi médico lo resolvió de esta manera:

Número de ciclos en el bucle = 15 cc
Número de ciclos de reloj para la ejecución del segmento en el procesador segmentado =
= 1 cc (etapa IF de la instrucción inicial) + (Número de ciclos de reloj en el bucle L1) x
Número de ciclos de bucle = 1 + 15 x 400/4 = 1501 cc
Aceleración del procesador segmentado en comparación con el procesador no segmentado =
= Número de ciclos de reloj para la ejecución del segmento en el procesador no segmentado /
Número de ciclos de reloj para la ejecución del segmento en el procesador segmentado simple =
= 3005 cc/1501 = 2 veces

¿Puede explicarme de dónde sacamos el 1? ¿Cuál es la fórmula que utilizó?

ingrese la descripción de la imagen aquí

Edite su pregunta anterior en lugar de volver a publicarla como una nueva pregunta.
Probablemente los obtenga del código de bucle que debería estar en algún lugar de la pregunta.
@Desconocido: solo una observación: esta es (al menos) su tercera pregunta sobre este tema. Al eliminar las preguntas anteriores, en lugar de mejorarlas, reducirás la cantidad de personas que quieren dedicar su tiempo a ayudarte. Esto se debe a que podría eliminar esta pregunta, como lo hizo antes, después de que alguien haya pasado tiempo tratando de comprender y aclarar su pregunta (o incluso después de escribir una respuesta). ¿Le gustaría ayudar a alguien y luego eliminar su trabajo? Esa es la pregunta que se harán los lectores. Así que tenga en cuenta que perder el tiempo de otras personas significa que recibe menos ayuda.

Respuestas (1)

¿Puede explicarme de dónde sacamos el 1? ¿Cuál es la fórmula que utilizó?

Supongo que cuando dices "el 1" te refieres al "1 cc" al comienzo de la expresión

Número de ciclos de reloj para la ejecución del segmento en el procesador segmentado == 1 cc (etapa IF de la instrucción inicial) + (Número de ciclos de reloj en el bucle L1) x Número de ciclos de bucle = 1 + 15 x 400/4 = 1501 cc

A partir de la información proporcionada en su pregunta, no puedo determinar qué contribuye al ciclo de reloj adicional.


:: COMENTARIOS ::

Por lo general, una dirección de memoria (un puntero) se almacena en el registro R4 y, en este caso particular, la dirección debe estar alineada con palabras, lo que significa que los dos bits menos significativos de la dirección son ceros, es decir, DIRECCIÓN mod 4=0. Pero considerando cómo se usa el valor de R4 en las últimas dos instrucciones (SUB y BNEZ), parece poco probable que R4 tenga una dirección de memoria.

Las dos últimas instrucciones (SUB y BNEZ) toman la determinación de continuar o no con el bucle, y dependen del valor del registro R4 para tomar esta decisión. En otras palabras, el valor inicial almacenado en el registro R4, la instrucción SUB y la instrucción BNEZ determinan el recuento de iteraciones del ciclo. Entonces la pregunta es, "¿Qué valor inicial se almacena en el registro R4?" Si el valor inicial del registro R4 no está definido, no se puede decir definitivamente que el ciclo itera 400/4 veces como se indica en su pregunta.

Por ejemplo, si el valor inicial de R4 es 3, ¿cuántas veces iterará el bucle? (Sugerencia: deshágase de las instrucciones LW, ADDI y SW y use solo las instrucciones SUB y BNEZ para determinar el número de iteraciones del ciclo cuando el valor inicial de R4 es cualquier valor que NO sea un múltiplo entero de 4, por ejemplo, 7 , 11 , 2, etc)