Saltar al contenido

¿Cuál es la diferencia usando NOP y puestos en MIPS?

Contamos con tu ayuda para compartir nuestros enunciados en referencia a las ciencias de la computación.

Solución:

Creo que tienes tu terminología confundida.

El procesador inyecta una parada en la canalización para resolver los riesgos de datos (situaciones en las que los datos necesarios para procesar una instrucción aún no están disponibles). NOP es solo una instrucción sin efectos secundarios.


Establos

Recuerde la canalización RISC clásica de 5 etapas de canalización:

  1. IF: obtención de instrucciones (obtiene la siguiente instrucción de la memoria)
  2. ID – Decodificación de instrucción (Averigüe qué instrucción es esta y cuáles son los operandos)
  3. EX – Ejecutar (Realizar la acción)
  4. MEM – Acceso a la memoria (almacenar o leer de la memoria)
  5. WB – Write back (escribe un resultado de nuevo en un registro)

Considere el fragmento de código:

add $t0, $t1, $t1
sub $t2, $t0, $t0

A partir de aquí, es obvio que la segunda instrucción se basa en el resultado de la primera. Este es un riesgo de datos: Leer después de escribir (RAW); a true dependencia.

los sub requiere el valor de la add durante su fase EX, pero el add solo estará en su fase MEM – el valor no estará disponible hasta la fase WB:

+------------------------------+----+----+----+-----+----+---+---+---+---+
|                              |         CPU Cycles                      |
+------------------------------+----+----+----+-----+----+---+---+---+---+
|         Instruction          | 1  | 2  | 3  | 4   | 5  | 6 | 7 | 8 | 9 |
+------------------------------------------------------------------------+
|       0 | add $t0, $t1, $t1  | IF | ID | EX | MEM | WB |   |   |   |   |
|       1 | sub $t2, $t0, $t0  |    | IF | ID | EX  |    |   |   |   |   |
+---------+--------------------+----+----+----+-----+----+---+---+---+---+

Una solución a este problema es que el procesador inserte paradas o burbuja la canalización hasta que los datos estén disponibles.

+------------------------------+----+----+----+-----+----+----+-----+---+----+
|                              |         CPU Cycles                          |
+------------------------------+----+----+----+-----+----+----+-----+----+---+
|         Instruction          | 1  | 2  | 3  | 4   | 5  | 6  | 7   | 8  | 9 |
+----------------------------------------------------------------------------+
|        0 | add $t0, $t1, $t1 | IF | ID | EX | MEM | WB |    |     |    |   |
|        1 | sub $t2, $t0, $t0 |    | IF | ID | S   | S  | EX | MEM | WB |   |
+----------+-------------------+----+----+----+-----+----+---+---+---+-------+

NOP

A NOP es una instrucción que no hace nada (no tiene efectos secundarios). El ensamblador MIPS a menudo admite un nop instrucción pero en MIPS esto es equivalente a sll $zero $zero 0.

Esta instrucción ocupará las 5 etapas de la canalización. Se usa más comúnmente para llenar la ranura de retardo de bifurcación de saltos o bifurcaciones cuando no hay nada más útil que se pueda hacer en esa ranura.

j label
nop # nothing useful to put here

Si está utilizando un simulador MIPS, es posible que deba habilitar la simulación de intervalos de demora de bifurcación para ver esto. (Por ejemplo, en spim utilizar el -delayed_branches argumento)

Sección de Reseñas y Valoraciones

Si conservas alguna desconfianza y disposición de progresar nuestro crónica puedes escribir un informe y con placer lo observaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *