jueves, 13 de marzo de 2008

Terminé la carrera !!

Bueno, pues ya terminé la carrera de informática. Este blog ha sido testigo de la recta final de la misma. He escrito aquí entradas sobre mis últimas asignaturas: TIS, ARC2 y ASP2. En esta última (ASP2) he sacado un 7.7 al final. Así que nada, de momento no voy a escribir más cosas sobre la carrera en este blog. No, de momento, quizá el año que viene haga el máster.

lunes, 3 de marzo de 2008

Algunos conceptos claros sobre ASP2

Tras varias sesiones de tutorías de hoy lunes, creo que me han quedado claro los siguientes puntos:
  1. El cronograma de un VLIW es igual al de un escalar, y donde solo hay bloqueos software (instrucciones NOP insertadas por el compilador).

  2. El funcionamiento básico de las etiquetas en el algoritmo de Tomasulo es que en la etapa IS se asocia una etiqueta al registro destino de la instrucción (si lo tiene) y se queda guardado en el fichero de registros, acompañando al registro que proceda. Los operandos de esta instrucción, si no están disponibles, dependen de las etiquetas de los mismos (previamente establecidas por instrucciones anteriores); se almacenaría dicha instrucción en una RS.

  3. Las reglas de emisión son las condiciones que deben cumplir las instrucciones de la ventana de instrucciones para que éstas se emitan (por ejemplo que sean de tipos apropiados para las tuberías existentes). Las reglas de emisión tienen sentido sobre todo en planificación estática. En planificación dinámica, basta con que existan RS libres.

  4. En la traspa del tema 1 donde aparece el espectro de máquinas con ILP y cinco tipos de máquinas, son destacables los tipos 1, 3 y 5. Es decir: 1. Planif. Dinámica sin reglas de emisión; 3. Planificación estática con reglas de emisión (emisión dinámica); 5. VLIW puro (planificación estática, emisión estática y macroinstrucciones con slots).

  5. En planificación estática se tiene ejecución en orden. Si hay un bloqueo, las siguientes instrucciones no se ejecutan.

  6. Las tuberías tienen sobre todo sentido en planificación estática (con reglas de emisión, emisión dinámica) ??

  7. Los saltos se resuelven (se sabe realmente si el salto es T o NT) en EX con planificación dinámica. Se resuelven en ID con planificación estática. Si hay mecanismos de especulación (lo cual tiene sentido sobre todo en planificación dinámica), el contador de programa solo se entera de la resolución del sato tras la etapa CM (commit) de la instrucción del salto. Finalmente, la BTB termina su predicción tras la etapa IF.

  8. Para saber a cuantas iteraciones hay que hacerles el cronograma y qué iteración contar sus ciclos para averiguar el IPC o el CPI o los MFlops (por ejemplo), habría que dar con el estacionario. En la práctica bastaría con hacer tres iteraciones y comprobar cómo se comportan. Si la segunda y la tercera se comportan igual, contar una de ellas. Si la tercera es igual que la primera, quizá se comporten iguales las iteraciones pares, y por otro lado las impares.

  9. Habrá bloqueos estructurales relacionados con el número de CDB’s cuando varias instrucciones realicen su etapa WB en el mismo ciclo. En el peor de los casos, todas las instrucciones en vuelo realizarán su etapa WB en el mismo ciclo. Por lo cual, debemos incluir k*m CDB’s de cada tipo de instrucción (enteros y FP). Es decir, k(etapas)*m(grado-superesc.) = 5*4 = 20 CDB’s de enteros y 20 CDB’s de FP.

  10. Un procesador superescalar tiene siempre emisión dinámica (el procesador comprueba dependencias en la etapa ID/IS). En procesador superescalar puede tener planificación estática o dinámica.

  11. Si un procesador superescalar tiene planificación estática, tendrá tuberías (pequeñas máquinas escalares que ejecutan ciertos tipos de instrucciones). Además, si tiene planificación estática, la emisión (recordar: siempre dinámica) puede ser rígida (si las instrucciones tienen que tener el orden adecuado para entrar en las tuberías) o flexible (pueden estar en cualquier orden; hay etapa SW (ID + SW)). Teniendo planificación estática, habrá reglas de emisión.

  12. Si un procesador superescalar tiene planificación dinámica, la emisión es habitualmente flexible. En un principio no habrá más reglas de emisión que la disponibilidad de RS's. No tiene tuberías.

  13. Por otra parte, existen los conceptos de cola de instrucciones y ventana de instrucciones. La cola de instrucciones contiene las instrucciones que han realizado su etapa IF y aún no se han emitido (no han hecho ID ó IS). El tamaño óptimo de la cola de instrucciones para un superescalar de grado m es 2·m-1. Así aseguramos que siempre haya instrucciones para ser emitidas. De hecho la etapa IF está desacoplada de la etapa ID/IS y a veces se omite.

  14. Se considera como ventana de instrucciones al subconjunto de instrucciones de la cola de instrucciones que son candidatas a ser emitidas en el siguiente ciclo. El tamaño de dicha ventana suele ser m (el grado de superescalaridad). La ventana de instrucciones puede ser fija o deslizante. Una ventana fija impide que entren nuevas instrucciones en la misma hasta que todas las existentes hayan emitido. La ventana deslizante permite contemplar nuevas instrucciones en la ventana conforme se vayan emitiendo las existentes (se aprovechan más los recursos).

  15. Por último, y por otra parte, las unidades funcionales de un procesador pueden estar segmentadas o no estarlo. Si lo están, permiten que varias instrucciones encadenen sus ciclos de ejecución en las mismas.

Por lo demás, sigo haciendo ejercicios de exámenes para chocarme con más dudas y problemas.

Un saludo!

sábado, 1 de marzo de 2008

Ejercicio 3 prueba alternativa A abril'07, mi cronograma

Este ejercicio está fatal :-( No cumple la emisión en orden, y además no se pueden emitir instrucciones emparejadas tan "lejanas" como se aprecia en la solución. Lo volveré a intentar.

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