miércoles, 17 de junio de 2009

2.b Explicación en detalle de las técnicas de resolución de riesgos en procesadores segmentados utilizando como ejemplo la arquitectura MIPS

En primer lugar, comenzaremos hablando un poco de la arquitectura MIPS (Microprocessor without Interlocked Pipeline Stages), que es una arquitectura de procesadores segmentada de tipo RISC utilizada en multitud de consolas como la Nintendo 64, la PlayStation 1 y 2, y la PSP. Una estimación a finales de los años 90 determinó que aproximadamente uno de cada tres chips de tipo RISC que salieron al mercado estaban basados en MIPS.

El conjunto de instrucciones de esta arquitectura es muy limpio, por lo que en la docencia de las Universidades se suelen basar en ella para explicar las arquitecturas de computadores.

A continuación estudiaremos la segmentación en la arquitectura MIPS 64 y veremos que problemas tiene y como se solucionan. Antes de nada, debemos decir que la memoria de esta arquitectura esta separada para instrucciones y datos (Harvard) y que el cauce esta segmentado en 5 etapas de un ciclo cada una. Las etapas son las siguientes:

Etapa IF:

- Extracción de la instrucción.
- PC = PC + 4

Etapa ID:

- Decodificación de la instrucción.
- Lectura de registros.
- Extensión de signo (si es necesario).
- Actualización del PC en caso de salto.

Etapa EX:

- Cálculos en la ALU.
- Cálculo de dirección de operandos de memoria.

Etapa MEM:

- Acceso a memoria (Load/Store).

Etapa WB:

- Escritura de los registros.


Debido al hecho de que esta arquitectura es segmentada, existe la posibilidad de que se violen las dependencias en la segmentación. Esta posibilidad provoca una serie de riesgos de segmentación que hay que detectar y resolver. Existen tres tipos de riesgos:

Riesgos estructurales: Se producen cuando dos o más instrucciones necesitan utilizar el mismo recurso al mismo tiempo. En este caso, para evitar que se acceda a la memoria a la vez se utiliza una memoria que tiene separados los datos de las instrucciones denominada Harvard (al contrario que la arquitectura de von Neumann).

En el caso de que el problema se produzca porque se escribeen y leen los registros a la vez, lo solucionamos escribiendo en el 1 subciclo y leyendo en el segundo.

Riesgos de datos: Se producen cuando una o más instrucciones necesitan utilizar un dato que produce una instrucción anterior antes de que esté listo. Los tipos de riesgos de datos son los siguientes.

RAW (Read After Write) Lectura después de escritura: La lectura de un registro que es dato de una instrucción posterior se realiza antes que la escritura de dicho registro como resultado de una instrucción anterior. (La instrucción posterior opera con el dato incorrecto).

WAR (Write After Read) Escritura después de lectura: La escritura de un registro que es resultado de una instrucción posterior se realiza antes que la lectura de dicho registro como dato de una instrucción anterior. (La instrucción anterior opera con el dato incorrecto).

WAW (Write After Write) Escritura después de escritura: La escritura de un registro que es resultado de una instrucción posterior se realiza antes que la escritura de dicho registro como resultado de una instrucción anterior. (El dato almacenado enel registro es incorrecto).


En la arquitectura MIPS los riesgos WAR (Write After Read) y WAW (Write After Write) se dan solo cuando hay ejecución fuera de orden u operaciones multiciclo (sólo las WAW), y los RAR (Read After Read) no tienen ningun riesgo ya que no modifican ningún dato. Por tanto, por el hecho de ser una unidad segmentada solo es necesario contemplar los RAW (Read After Write), que se detectan en la fase ID.Existen dos tipos de soluciones para los riesgos RAW, software y hardware.

Dentro de las soluciones software nos encontramos con la inserción de instrucciones NOP, en la que se insertan instrucciones cuya función es alargar el tiempo de ejecución para que no se produzca una RAW, y con la reordenación del código, en la que se reordenan las instrucciones para de nuevo evitar que se produzca una RAW.

También hay dos soluciones hardware para este tipo de riesgos. La primera es una detección del cauce, que al igual que la inserción de instrucciones NOP, lo que hace es alargar el tiempo de ejecución. La segunda es la anticipación, en la que se utiliza el hardware para detectar el error y enviar los datos hacia donde son necesarios.

Riesgos de control: Se producen siempre que hay instrucciones que modifican el valor del PC: saltos. En este tipo de riesgos, el problema surge cuando se ha cargado ya una instrucción pero en el PC se produce un salto, por lo que no se sabe si se debe ejecutar la instrucción cargada o no, pero ésta siempre se ejecuta. Para solucionar estos riesgos también existen soluciones software y hardware.

La primera de las soluciones software es la misma que la de los riesgos de datos, es decir, la inserción de instrucciones NOP para que de tiempo a que se produzca el salto de una instrucción a otra antes de que se cargue la conflictiva. La otra es la técnica del salto retardado, con la cual se evita la penalización por salto introduciendo justo a continuación de la instrucción de salto, instrucciones que se van a ejecutar en cualquier caso.

Las soluciones hardware se basan en la predicción de saltos. Dichas predicciones siempre consiguen una reducción de la penalización por salto cuando se aciertan. Con esta técnica se consigue que la penalización sea de un ciclo para saltos tomados y de ningún ciclo para saltos que no se toman. Mientras se decodifica y se hace efectivo el salto se va buscando la siguiente instrucción; si el salto no se toma, se continúa normalmente y no se a perdido ningún ciclo, si el salto se toma, se busca la instrucción destino y se ha perdido un ciclo haciendo trabajo que no era necesario. Hay que tener en cuenta que en la arquitectura del MIPS no tiene sentido utilizar la predicción de salto tomado porque supone una penalización de un ciclo en todos los casos, independientemente de si se acierta la predicción o no.

No hay comentarios:

Publicar un comentario