Manejo Avanzado de Hazards en Arquitectura de Procesadores: NOPs y Predicción de Saltos
Clasificado en Informática
Escrito el en
español con un tamaño de 3,22 KB
Instrucción NOP y su Rol en el Pipeline
La instrucción NOP (No Operation) indica que no se debe alterar el estado del camino de datos durante su ejecución. Específicamente, implica:
- Que no se actualice el Contador de Programa (PC).
- Que no se escriba en los registros (evitando la actualización de los registros IF/ID).
- Colocar las señales de control a cero.
Por lo tanto, se debe añadir una unidad que detecte este tipo de hazard para insertar la NOP cuando sea necesario.
Rol del Compilador
El compilador puede disminuir la ocurrencia de este tipo de hazard adelantando instrucciones en el orden de ejecución.
Hazards de Control: Estrategias de Mitigación
Hazards de Control: Aún no existe nada tan efectivo para tratarlos como el adelantamiento en el caso de los hazards de datos.
Opciones para Manejar Hazards de Control (IPC)
Se consideran varias opciones para mantener el rendimiento:
- Detener la ejecución (Inserción de NOPs): Es una solución, pero resulta ser demasiado lenta.
- Asumir que el salto no se realiza (Especulación):
- Si el salto sí debía realizarse, las instrucciones que avanzaron indebidamente se descartan (proceso conocido como flush).
- Esto se conoce como Predicción dinámica de saltos (Especulación).
Mejora: No Tomar el Salto Inmediatamente
Una estrategia avanzada implica adelantar en el pipeline la evaluación del branch (salto):
- Calcular la dirección efectiva del salto.
- Evaluar la condición de salto: Esto requiere adelantar la lectura de los datos, lo cual puede depender de valores aún no calculados, y por ende, requiere circuitería adicional para realizar la comparación de manera temprana.
Predicción Dinámica de Saltos
La Predicción dinámica de saltos es la predicción del salto utilizando la información que se tiene en tiempo de ejecución.
Mecanismo Básico
Una forma común es verificar si ese salto fue tomado la última vez que fue evaluado. Si fue tomado la última vez, se comienzan a ejecutar las mismas instrucciones anteriores.
Tabla Histórica de Saltos
Esto se denomina memoria de predicción de saltos o Tabla histórica de saltos. La tabla (memoria) contendrá:
- Parte inferior de la dirección de salto.
- Uno o más bits que indican si el salto fue tomado o no.
- Si la predicción es incorrecta, el bit se invierte y el sistema debe retornar al estado correcto.
Otras Soluciones Avanzadas
Existen otras estructuras para mejorar la precisión:
- Contar con una estructura BTB (Branch Target Buffer) que almacene la dirección de salto (el PC destino).
- Tomar en cuenta la información global y local sobre los saltos (predictores correlacionados).
- Predictores tipo torneo: Se tienen varias predicciones de un mismo salto y un mecanismo de escogencia de qué predictor utilizar para cada salto específico.