Estoy asumiendo algunas cosas porque estoy seguro de que me diste suficiente información para una respuesta exacta. Describiré un sistema que me permitirá darle una respuesta.
Supongamos que este chip MIPS tiene una instrucción ADD que agrega dos registros y almacena el resultado en un tercero. En la tubería, los datos se leerían del archivo de registro en el ciclo 3, y el resultado se escribiría en el ciclo 5. El código del ensamblador para sumar tres números generaría un peligro:
(Agregue los registros $ 11, $ 12 y $ 13 y almacene el resultado en el registro $ 10)
add $10, $13, $12 # $13 + $12 -> $10
add $9, $10, $11 # $11 + $10 -> $9
El código tiene un peligro de lectura después de escritura en el registro $ 10. El procesador detectaría el peligro de los datos y detendría la segunda adición un ciclo. Esto supone que cada ciclo comienza con una escritura y termina con una lectura. Si se invirtió el orden, entonces los datos no estarían en el registro a tiempo para el quinto tiempo de lectura del reloj, y sería necesario un ciclo de bloqueo adicional para obtener el resultado correcto. A continuación se muestra un ejemplo de línea de tiempo para un sistema de "escritura, luego lectura".
- Leer primero agregar instrucción
- Lea la segunda instrucción de agregar
- Lea los operandos para la primera instrucción de agregar
- Palleline stall para la segunda adición
- Escriba el resultado de la primera adición, lea los operandos de la segunda adición
- ...
- Escribe el resultado de la segunda adición
Wikipedia tiene un buen artículo sobre peligros de tuberías