Optimización de Procesadores: Gestión de Riesgos en la Segmentación de Instrucciones

Clasificado en Informática

Escrito el en español con un tamaño de 3,07 KB

Conceptos Fundamentales de Segmentación de Instrucciones

Riesgos Estructurales en la Segmentación (4A)

  • Como consecuencia, cuando una instrucción contenga una referencia a la memoria de datos, la segmentación debe detenerse durante un ciclo de reloj.
  • La máquina no puede buscar la siguiente instrucción debido a que la referencia al dato está utilizando el puerto de memoria.
  • La figura a continuación muestra que una segmentación con un puerto de memoria es análoga a una detención durante una carga. Veremos otro tipo de detenciones cuando hablemos de riesgos de datos.

Detención durante un Riesgo Estructural: Carga con un Puerto de Memoria

Con solo un puerto de memoria, el procesador no puede iniciar una búsqueda de datos y una búsqueda de instrucción en el mismo ciclo. Una instrucción de carga roba efectivamente un ciclo de búsqueda de instrucción haciendo que la segmentación se detenga; ninguna instrucción se inicia en el ciclo de reloj 4 (que, normalmente, sería la instrucción i+3). Como la instrucción que se está buscando está detenida, las demás instrucciones pueden proceder normalmente. El ciclo de detención continuará pasando a través de las diferentes etapas de la segmentación.

  • Un efecto importante de la segmentación es cambiar la temporización relativa de las instrucciones al solapar su ejecución.
  • Esto introduce riesgos por dependencias de datos y de control.
  • Los riesgos por dependencias de datos se presentan cuando el orden de acceso a los operandos es alterado por la segmentación.

Riesgos por Dependencias de Datos (4B)

Definición y Ejemplos

  • Con relación al orden normal que se sigue en las instrucciones que se ejecutan secuencialmente.
  • Considerar la ejecución encauzada de las instrucciones:
ADD    R1,R2,R3
SUB    R4,R1,R5
  • La instrucción SUB tiene una fuente, R1, que es el destino de la instrucción ADD.
  • La instrucción ADD escribe el valor de R1 en la etapa WB, pero la instrucción SUB lee el valor durante su etapa ID.

Este problema se denomina riesgo por dependencias de datos.

Manejo de Riesgos por Dependencias de Datos

  • A menos que se tomen precauciones para prevenirlo, la instrucción SUB leerá el valor erróneo y tratará de utilizarlo.
  • En efecto, el valor utilizado por la instrucción SUB no es aún determinístico: aunque nos pueda parecer lógico suponer que SUB utilizará siempre el valor de R1, que fue asignado por una instrucción anterior a ADD, esto no siempre es así.
  • Si se presentase una interrupción entre las instrucciones ADD y SUB, se completaría la etapa WB de ADD, y el valor de R1 en ese punto sería el resultado de ADD.
  • Este comportamiento impredecible es obviamente inaceptable.
  • El problema planteado en este ejemplo puede resolverse con una simple técnica hardware llamada adelantamiento (forwarding) (también llamada desvío [bypassing] y a veces cortocircuito).

Entradas relacionadas: