- Los predictores de rama se utilizan para predecir la siguiente instrucción a ejecutar. Si se realiza una predicción correcta, las instrucciones ya están precargadas y, por lo tanto, no se produce una parada en la tubería. Por otro lado, en caso de predicción incorrecta, la ejecución entra en fases de recuperación. El estancamiento del oleoducto provoca una pérdida de rendimiento.
- Las técnicas que se pueden aplicar para reducir la predicción errónea de ramas son:aumentar el tamaño del buffer, desenrollar bucles y fusionar bucles.
2. Reducción de penalizaciones por fallos en la caché de datos
- La caché de datos se utiliza para reducir los tiempos de carga y almacenamiento al recuperar datos de la memoria principal. Pero cuando la dirección de memoria solicitada no se encuentra en la memoria caché, se denomina Cache Miss y los datos deben recuperarse de la memoria principal, lo que lleva más tiempo.
- Hay dos tipos de errores de caché:
a) Fallos fríos - Ocurre cuando el bloque de memoria al que se hace referencia no está en la caché y tampoco estaba allí antes.
b) Férdidas de capacidad - Ocurre cuando el bloque solicitado no está presente en el caché pero podría haber estado presente si hubiera suficiente espacio.
- Técnicas para reducir los errores de caché:aumento del tamaño de la caché, localidad espacial (agrupación de datos con alta probabilidad de acceso).
3. Reducción de los gastos generales del flujo de control
- Las instrucciones de flujo de control en un programa cambian la secuencia de ejecución de las instrucciones.
- Técnicas que se pueden utilizar para reducir el flujo de control:Reducir el número de ramas (por ejemplo, eliminar el if-else anidado), uso de Jump-Table, desenrollado de bucles.
4. Ejecución especulativa
- La ejecución especulativa implica ejecutar una instrucción más allá de una instrucción de bifurcación con el supuesto de que se tomará la bifurcación.
- Las especulaciones se verifican o se anulan según la dirección real que tome la rama en el futuro.