Algoritmo de marcador

Algoritmo de marcador

El algoritmo de marcador es un método centralizado, utilizado en el CDC 6600 para planificar de manera dinámica la segmentación, de forma que las instrucciones pueden ser ejecutadas fuera de orden cuando no existen conflictos y el hardware está disponible. En un marcador se registran las dependencias de datos de cada instrucción. Las instrucciones son emitidas solamente cuando el marcador determina que ya no hay conflictos con las instrucciones previamente ejecutadas o en ejecución. Si una instrucción sufre la inserción de una burbuja por considerarse insegura su ejecución, el marcador vigila el flujo de ejecución de las instrucciones hasta que todas las dependencias hayan sido resueltas, pudiendo así ser relanzada la instrucción detenida.

Contenido

Etapas

Las instrucciones son decodificadas en orden y van pasando por las siguientes cuatro etapas:

  1. Issue (Emisión): El sistema verifica aquellos registros que van a ser leídos o modificados por la instrucción. El procesador podrá acceder a esta información cuando sea necesario en alguna de las siguientes etapas. Para poder evitar dependencias de salida (WAW - Write after Write) se inserta una burbuja en la instrucción hasta que todas las instrucciones que pretenden escribir en el mismo registro sean completadas. La instrucción también es detenida si alguna de las unidades funcionales se encuentra ocupada.
  2. Read operands (Lectura de operandos): Una vez que se ha emitido la instrucción y se ha comprobado que todas las unidades funcionales necesarias están libres, la instrucción espera a que los operandos estén disponibles. Este procedimiento resuelve las dependencias verdaderas (RAW - Read after Write) ya que los registros que van a ser modificados por alguna otra instrucción no son considerados como disponibles hasta que son realmente modificados.
  3. Execution (Ejecución): Cuando todos los operandos han sido capturados, la unidad funcional comienza la ejecución. Una vez que el resultado está disponible, el marcador recibe una notificación.
  4. Write Result (Escritura de resultados): En esta etapa se intenta la escritura del resultado en el correspondiente registro de destino. Sin embargo, esta operación se retrasa hasta que las instrucciones que intentan leer los registros en que esta instrucción pretende escribir han completado su etapa de lectura de operandos. Esto permite resolver las dependencias (WAR - Write after Read).

Estructura de datos

Para controlar la ejecución de las instrucciones, el marcador mantiene tres tablas de estados:

  • Instruction Status (Estados de instrucción): Indica, para cada instrucción en ejecución, en que etapa de las 4 se encuentra.
  • Functional Unit Status (Estados de unidad funcional): Indica el estado de cada unidad funcional, manteniendo cada una de ellas 9 campos en la tabla:
    • Busy (Ocupado): Indica si la unidad esta siendo utilizada o no
    • Op (Operación): Operación a realizar en la unidad (por ejemplo: MUL, DIV or MOD)
    • Fi: Registro de destino
    • Fj,Fk: Números de registros fuente
    • Qj,Qk: Unidades funcionales que producirán el resultado a leer de los registros fuente Fj, Fk
    • Rj,Rk: Marcas que indican cuando los registros Fj, Fk están listos
  • Register Status (Estados de registro): Indica, para cada registro, qué unidad funcional escribirá en él su resultado.

Algoritmo

El algoritmo detallado para el control del marcador se describe como sigue:

 function issue(op, dst, src1, src2)
    wait until (!Busy[FU] AND !Result[dst]); // FU can be any functional unit that can execute operation op
    Busy[FU] ← Yes; 
    Op[FU] ← op;
    Fi[FU] ← dst;
    Fj[FU] ← src1;
    Fk[FU] ← src2;
    Qj[FU] ← Result[src1];
    Qk[FU] ← Result[src2];  
    Rj[FU] ← not Qj;
    Rk[FU] ← not Qk;
    Result[dst] ← FU;
 
 function read_operands(FU)
    wait until (Rj[FU] AND Rk[FU]);
    Rj[FU] ← No;
    Rk[FU] ← No;
 
 function execute(FU)
    // Execute whatever FU must do
 
 function write_back(FU)
    wait until (\forallf {(Fj[f]≠Fi[FU] OR Rj[f]=No) AND (Fk[f]≠Fi[FU] OR Rk[f]=No)})
    foreach f do
        if Qj[f]=FU then Rj[f] ← Yes;
        if Qk[f]=FU then Rk[f] ← Yes;
    Result[Fi[FU] ] ← 0;
    Busy[FU] ← No;

Observaciones

El algoritmo de marcador puede insertar burbujas en la etapa de emisión si ni hay ninguna unidad funcional disponible. En este caso, instrucciones futuras que podrían ser ejecutadas esperarían hasta que el riesgo estructural fuese resuelto. Algunas otras técnicas como el algoritmo de Tomasulo pueden evitar los riesgos estructurales y resolver las dependencias WAR y WAW mediante el renombre de registros.

Enlaces externos

Véase también


Wikimedia foundation. 2010.

Игры ⚽ Нужна курсовая?

Mira otros diccionarios:

  • Algoritmo de Tomasulo — El algoritmo de Tomasulo es un algoritmo de planificación dinámica desarrollado por Robert Tomasulo, de IBM. Se diseñó para permitir a un procesador ejecutar instrucciones fuera de orden. Este algoritmo difiere del algoritmo de marcador… …   Wikipedia Español

  • Algoritmo Doomsday — El algoritmo Doomsday o regla Doomsday (algoritmo del día del fin del mundo , en español), es un algoritmo que permite calcular en qué día de la semana cae un día de un año dado. Contenido 1 Introducción 2 Cálculo del Doomsday de un año 2.1 …   Wikipedia Español

  • Ejecución fuera de orden — En arquitectura de computadores, la ejecución fuera de orden u OoOE (Out of Order Execution) es un paradigma utilizado en la mayoría de los microprocesadores de alto rendimiento como forma de aprovechar los ciclos de instrucción que de otro modo… …   Wikipedia Español

  • Dependencia de datos — Saltar a navegación, búsqueda En informática, se conoce como dependencia de datos aquella situación en que las instrucciones de un programa se refieren a los resultados de otras anteriores que aún no han sido completadas. Si dichas dependencias… …   Wikipedia Español

  • LZSS — Este artículo o sección necesita una revisión de ortografía y gramática. Puedes colaborar editándolo (lee aquí sugerencias para mejorar tu ortografía). Cuando se haya corregido, borra este aviso por favor. El algoritmo de compresión lz77… …   Wikipedia Español

  • Ajedrez por computadora — GNU Chess 5.07 en interface WinBoard 4.2.7. En el siglo XVIII empezó a difundirse la idea de crear una computadora capaz de jugar al ajedrez. En el año 1769, un jugador de ajedrez autómata llamado El Turco[1] …   Wikipedia Español

  • Sucesión de Fibonacci — Gráfica de la sucesión de Fibonacci hasta f10 En matemática, la sucesión de Fibonacci es la siguiente sucesión infinita de números naturales: La sucesión inicia con …   Wikipedia Español

  • Gramática del español — Estatua del gramático Antonio de Nebrija en la Biblioteca Nacional de Madrid, por Anselmo Nogués. En 1492, Nebrija fue el primer europeo en escribir una gramática de una lengua románica o neolatina, el español …   Wikipedia Español

  • Cinta de audio digital — Cinta de Audio Digital. Cinta de Audio Digital, (del inglés Digital Audio Tape y abreviado DAT) es una señal de grabación y medio de reproducción desarrollado por Sony a mediados de 1980. Fue el primer formato de casete digital comercializado y… …   Wikipedia Español

  • Jerga informática — Anexo:Jerga informática Saltar a navegación, búsqueda El lenguaje de la informática está caracterizado por emplear numerosos anglicismos, puesto que el idioma inglés se ha convertido en la lengua franca de la informática. El uso de algunas… …   Wikipedia Español

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”