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 se producen debido a paradas de canalización . [1] [2] Un riesgo de datos puede provocar una parada en la tubería cuando la operación actual tiene que esperar los resultados de una operación anterior que aún no ha finalizado.
AÑADIR ABC#A=B+CSUBDCA #D=CA
Si estas dos instrucciones de pseudocódigo ensamblador se ejecutan en una canalización, después de buscar y decodificar la segunda instrucción, la canalización se detiene, esperando hasta que se escriba y lea el resultado de la suma.
En algunos casos, todos los bloqueos provocados por estos riesgos 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 donde el reenvío de operandos tiene sentido. Luego se puede utilizar un multiplexor para seleccionar el registro o flip-flop adecuado para leer el operando.