jueves, 21 de febrero de 2008

Mi solución al ejercicio 1 del boletín 1

El ejercicio tiene dos apartados: a) y b).

a) Ésta es mi solución al apartado a) (seguramente tenga errores)


Pues parece que no tiene errores, tras una sesión de revisión por parte de un profesor.

miércoles, 20 de febrero de 2008

Nuevas Dudas sobre ASP2

Seguimos avanzando con ASP2, ya voy casi por la mitad del tema 3 y último. Tengo algunas dudas que resumo a continuación:
  1. En la página 12 del tema 1 se incluye un cuadro con los ciclos de bloqueo (en VLIW) que se producen según las instrucciones que generan el dato y las que lo usan. No entiendo por qué difiere el número de ciclos de bloqueo cuando se mantiene constante la instrucción que genera el dato y varía según la instrucción que lo usa --> Solución: Esto se debe a que la instrucción que usa el dato lo utiliza en etapas distintas de su ejecución. Además, estas latencias tienen interés al fabricar una tabla de macroinstrucciones para un VLIW (ver solución al problema P1 b) de la prueba alternativa de 13-4-2007 (A).

  2. ¿Qué significa "contención" en el segundo párrafo de la página 13 del tema 1? --> Solución: Significa bloqueo estructural, ya que no hay puertos suficientes en el fichero de registros para la lectura simultánea de los mismos por parte de varias instrucciones.

  3. En la página 18 del tema 1 se comenta que la única relación entre las tuberías FP e INT/Acc.Mem. es el Ld/St para FP. En este caso, ¿cómo actúa la fase ID con dicha instrucción? --> Solución: La instrucción Ld/St de FP entra en la tubería de INT, pero usa el fichero de registros FP, que es un recurso asociado a la tubería de FP.

  4. No comprendo la solución aportada por el profesor Alejandro Linares en los foros de la asignatura. Se supone que es superescalar con m=4. Entiendo que ventana fija significa que mientras que haya instrucciones en caché de IF que no se hayan emitido (ID ó IS), no se podrá buscar (IF) ninguna instrucción más (¿no es cierto?). La ventana deslizante permite que si se "desaloja" una instrucción, pueda entrar otra. No veo entonces el siguiente cronograma sombreado en azul:
  5. En la página 19 del tema 1, ¿por qué tiene dos ciclos de bloqueo la instrucción XOR montando las tuberías lo más independientemente posibles?. No existen dependencias y la ALU INT está libre, ¿no?.

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