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.
Las instrucciones son decodificadas en orden y van pasando por las siguientes cuatro etapas:
Para controlar la ejecución de las instrucciones, el marcador mantiene tres tablas de estados:
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 ( f {(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;
El algoritmo de marcador puede insertar burbujas en la etapa de emisión si no 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.