lunes, 11 de febrero de 2008

Comenzando con ASP2

Como comenté, ya sólo me queda una asignatura: ASP2. Por ello, aquí me encuentro estudiando a ver si la apruebo. El examen es el 7 de Marzo (2008).

Antes que nada, tengo que decir que cualquier material escrito en este blog es propio, y eso quiere decir que puede que me equivoque en lo que digo. Si este blog sirve de estudio, hay que tener precaución en este sentido, no quiero que nadie le lleve a error. Son sólo ensayos y soluciones propias.

Por ahora mi visión de las partes de la asignatura es:

0.- Conocimientos previos:

  • Planificación (secuenciamiento o scheduling) de instrucciones.
  • Planificación estática: Desenrollado de bucles.
  • Planificación dinámica: Algoritmo de Tomasulo.

1.- Superescalar, VLIW, supersegmentación. Ejecución especulativa.

  • Ejecución especulativa: Usar la predicción de saltos para ejecutar instrucciones posteriores al salto.

2.- Arquitecturas multimedia y vectoriales.

3.- Sistemas multiprocesadores.

---

Explicación de un ciclo de bloqueo estructural.-

Por otra parte, estudiando la planificación dinámica con Tomasulo, me gustaría incluir un ejemplo con un código DLX simulado con la herramienta Supertomasim (del departamento ATC de la Univ. Sevilla). En concreto, la instantánea que viene a continuación muestra el estado del cronograma en el ciclo número 9 (C9), al cual voy a hacer referencia a continuación.

Para la máquina simulada se suponen 2 estaciones de reserva (RS) de Load y una sóla unidad funcional (UF) de Load. En el ciclo 9 se produce un ciclo de bloqueo debido a que la segunda instrucción Load del código puede emitirse (fase IS realizada en el ciclo 8) pero no puede ejecutarse hasta que la primera instrucción Load no haya finalizado su ejecución. Nótese que en el ciclo 9 aún se encuentra ejecutando el primer Load (su segundo ciclo EXE).

Este ciclo de bloqueo puede haberse subsanado si la unidad funcional de Load estuviese segmentada (en Supertomasim, incluir dos unidades funcionales de Load (por ser 2 la duración de dicha UF)).

---

Una duda sobre la ausencia de un ciclo de bloqueo.-

Por otra parte, en el mismo código anterior, en el ciclo 15, primera instrucción ADDD, tengo una duda. En la ilustración siguiente se muestra dicho ciclo.

La cuestión es que la primera instrucción ADDD tiene una dependencia RAW con las dos instrucciones anteriores, con lo cual, hasta que éstas no escriban en el CDB (tras la fase WB), no se "levanta" el bloqueo de datos (lo cual, por otra parte, no bloquea la cadena, ya que se tiene ejecución en desorden (planificación dinámica con algoritmo de Tomasulo)).

No obstante, como se aprecia en la imagen, en el ciclo 15 se empieza a hacer EXE para dicha instrucción. No lo comprendo :-S

No hay comentarios: