Grosso modo, se dice una instrucción S2 depende de S1 si S1 debe ser ejecutada antes que S2.
El análisis de dependencias determina si es seguro o no reordenar o paralelizar instrucciones.
Una instrucción S2 depende en cuanto a control de S1 (expresado como
) si y solo si la ejecución de S2 viene condicionada por S1.
Una dependencia de datos surge entre dos instrucciones que pretenden acceder o modificar un mismo recurso.
El siguiente ejemplo muestra una dependencia verdadera: Una instrucción S2 es antidependiente de S1 (expresado como
El siguiente ejemplo muestra una antidependencia: Aquí, S2 modifica el valor de y pero S1 lee un valor anterior de dicha variable.
El siguiente ejemplo muestra una dependencia de salida: Aquí, Tanto S2 como S1 modifican el valor de la variable x.
Esta no es una dependencia en la misma línea que las anteriores, ya que no prohíbe la reordenación de instrucciones.