El reenvío de operandos (o reenvío de datos ) es una optimización en las CPU canalizadas para limitar los déficits de rendimiento que ocurren debido a bloqueos en la canalización . [1] [2] Un peligro de datos puede provocar un bloqueo en la canalización cuando la operación actual tiene que esperar los resultados de una operación anterior que aún no ha terminado.
Sumar ABC #A=B+CSubtítulo DCA #D=CA
Si estas dos instrucciones de pseudocódigo de ensamblaje se ejecutan en una canalización, después de obtener y decodificar la segunda instrucción, la canalización se detiene y espera hasta que se escriba y lea el resultado de la suma.
En algunos casos, todos los bloqueos provocados por estos peligros de lectura tras escritura de datos se pueden eliminar por completo mediante el reenvío de operandos: [3] [4] [5]
La unidad de control de la CPU debe implementar lógica para detectar dependencias en las que tenga sentido el reenvío de operandos. Luego se puede utilizar un multiplexor para seleccionar el registro o flip-flop adecuado desde el que leer el operando.