¡Recomienda este blog!

martes, 30 de noviembre de 2010

Procesadores de última generación: Especulación Hardware

Introucción.

Combina tres ideas:

* Predicción dinámica de saltos
* Especulación
* Planificación dinámica

Permite una ejecución dirigida por datos ya que las operaciones se ejecutan en cuanto están sus operandos están disponibles.

El hardware es una extensión del hardware del algoritmo de Tomasulo.

Las instrucciones:

* Se ejecutan fuera de orden.
* Se completan en orden.

El buffer de reordenamiento (ROB)

* Almacena resultados de las instrucciones
* Puede ser accedido por otras instrucciones para lectura de datos
* Proporciona registros virtuales adicionales
* Implementado como una cola circular
* Produce detenciones cuando está completo

Tomasulo con especulación

- Al conocer que una instrucción no es especulativa los datos del buffer de reordenamiento se llevan a los registros.
- El renombramiento de los registros se realiza en el buffer de reordenamiento.
- Al conocer que la especulación es incorrecta se eliminan sus resultados del buffer de reordenamiento.
- Excepciones precisas .
- Las instrucciones especulativas incorrectas no producen excepciones, pues éstas sólo son tratadas para instrucciones que se completan.
- Aunque el planteamiento es para unidades de FP, también se puede aplicar a unidades enteras.
Pasos en la ejecución de una instrucción

Emisión: si hay una estación de reserva disponible y espacio en el buffer de reordenamiento

* La instrucción es enviada a la estación de reserva.
* Los operandos son enviados a la estación de reserva, desde los registros o el buffer de reordenamiento.
Si no hay ninguna estación de reserva vacía o espacio disponible en el buffer de reordenamiento, se detiene la emisión hasta que ambos tienen entradas libres

Ejecución:

* Si aún no están disponibles los operandos, monitoriza el CDB a la espera del registro que se va a computar (este paso comprueba los riesgos RAW).
* Cuando los operandos están disponibles, ejecuta la operación.

Escritura del resultado:

* Cuando el resultado está disponible lo envía al CDB.
* Desde el CDB, a las estaciones de reserva que esperan el resultado y al buffer de reordenamiento.

Commit: cuando la instrucción alcanza el tope del buffer de reordenamiento:

 si la instrucción no es un salto, se escribe el resultado en el registro destino o memoria, se completan las excepciones y se elimina la instrucción del buffer de reordenamiento.
 si la instrucción es un salto, y
– la predicción ha sido correcta, se termina la instrucción
– la predicción ha sido incorrecta,
* se vacía el buffer de reordenamiento
* comienza la instrucción correcta
* se actualiza la información sobre la predicción de salto

Desambiguación de la memoria

¿Qué ocurre con una carga que sigue a un almacenamiento? ¿ Hay un riesgo RAW entre esas operaciones?

ST 0(R2),R5
LD R6,0(R3)

¿Se puede empezar la carga antes que el almacenamiento?

Dos posibilidades:

* Sin especulación: no se puede empezar la carga hasta que no se tenga seguridad de que 0(R2) distinto 0(R3).
* Con especulación: suponiendo que son o no dependientes y usar el buffer de reordenamiento.

 Se necesita un buffer para seguir la pista a los almacenamientos, en el orden del programa
 guardar g la dirección y el valor
 orden FIFO de retirada
 Cuando se emite una carga, se toma nota del almacenamiento en cabeza de la cola de almacenamientos
 Cuando se tiene la dirección de la carga, mirar la cola de almacenamientos:
 si algún almacenamiento está esperando su dirección, la carga se detiene
 si la dirección de la carga coincide con la de algún almacenamiento anterior, se tiene un riesgo RAW debido a memoria:

– si el valor está almacenado, devuelve ese valor.
– si el valor no está almacenado, devuelve entrada ROB.

 en cualquier otro caso, se envía la petición a memoria
 Los almacenamientos se completan en orden, por lo que no hay que preocuparse por riesgos WAR / WAW debidos a memoria

Ventajas de la especulación basada en HW.

* No hay dependencias a través de memoria.
* Se combina con predicción dinámica de saltos, que ofrece mejores resultados que la predicción estática.
* Se mantienen excepciones precisas.
* No se necesita recompilar el código.

Inconvenientes de la especulación basada en HW.

* Mayor complejidad hardware.
* Ejecución más lenta si aumenta la tasa de fallos.

0 comentarios:

Publicar un comentario