estructuras segmentadas noción de segmentación –rendimiento. –tipos de cauces. –cauces no...

68
Estructuras segmentadas •Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces. •Segmentación de instrucciones –Arquitectura DLX. –Encauzamiento de instrucciones en el DLX. –stallses.

Upload: fulgencio-arredondo

Post on 19-Feb-2015

74 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Estructuras segmentadas

•Noción de segmentación–Rendimiento.–Tipos de cauces.–Cauces no lineales y tablas de reserva.–Cálculo de latencias en cauces.

•Segmentación de instrucciones–Arquitectura DLX.–Encauzamiento de instrucciones en el DLX.–stallses.–Múltiples unidades funcionales.

Page 2: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Noción de segmentación

• ¿Qué es la segmentación o pipelining?– Técnica para la generación de paralelismo en

monoprocesadores.– Consiste en dividir una función en

subfunciones independientes que pueden realizarse simultáneamente (trabajo en cadena).

– En un instante determinado, se está trabajando sobre un número de elementos igual al número de etapas => paralelismo.

Page 3: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Noción de segmentación

Page 4: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Etapas del cauceEvolución de los elementos a través de las etapas del cauce:

Page 5: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Mejora del rendimiento• Suponemos que se cumple aproximadamente:

– T0 => tiempo en ejecutar el proceso completo sin segmentar

– T => tiempo en ejecutar una etapa– k => número de etapas de que consta el cauce

• Sin embargo, el tiempo en ejecutar n procesos sin segmentar:

Page 6: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Mejora del rendimiento

• El tiempo en ejecutar el proceso segmentado sobre 1 elemento en k etapas será:

• Y desde que sale el primer resultado del cauce, va saliendo uno nuevo cada T, por lo que el tiempo de procesar n elementos será:

• Con todo esto, la ganancia es:

Page 7: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Rendimiento Limite

• Observemos que la ganancia límite, cuando n tiende a infinito, es k:

Page 8: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Requisitos para la segmentación

• Características del proceso necesarias para poder aplicar segmentación:– Se debe poder descomponer en etapas.– Es necesario que las entradas de una etapa

estén determinadas únicamente por las salidas de la anterior.

– Cada etapa debe poder ser realizada por un circuito específico de forma más rápida que el conjunto del proceso.

– Los tiempos de ejecución de cada etapa deben parecidos.

Page 9: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Tipos de cauces

• Tipos de cauces:– uní función: ejecutan un único proceso.– multifunción: pueden ejecutar varios procesos:

• estáticos: en un instante determinado sólo pueden ejecutar uno.

• dinámicos: pueden ejecutar simultáneamente varios procesos.

– lineal: a cada etapa sólo le puede seguir otra etapa concreta.

– no lineal: se pueden establecer recorridos complejos de las etapas.

Page 10: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Aplicaciones

• Aplicación de la segmentación:– A operadores aritméticos:

• n ejecutan una o varias operaciones de la ALU.

• n pueden ser lineales (sumas) o no lineales (división). En este caso suelen ser cíclicos (bucles).

• n los procesadores actuales incluyen varias ALUs segmentadas, y cada una se puede ocupar de varias operaciones.

– A ejecución de instrucciones:• suelen ser cauces lineales.

• alguna de sus fases puede a su vez sub-segmentarse (uso de una ALU segmentada para la fase de ejecución).

Page 11: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Tablas de reserva• Cauces no lineales y tablas de reserva

Page 12: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Latencia• Latencia:• número de ciclos que separan la iniciación de dos operaciones (la distancia en ciclos entre las

entradas de dos elementos al cauce)

Latencia prohibida: latenciacon la que se producencolisiones (en el ejemplo, 1 esuna latencia prohibida)

Latencia permitida: latenciacon la que no se producecolisión (en el ejemplo, 2 es unalatencia permitida)

Page 13: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Ciclos de latencia• Ciclo de latencia:• secuencia de latencias permitidas que se puede repetir indefinidamente.• Ejemplo. Para la función B, se tiene que (1,4) es un ciclo de latencia:

Page 14: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Segmentación de instrucciones

• Segmentación de instrucciones• Arquitectura DLX.• Encauzamiento de instrucciones en el

DLX.• stallses:

– por dependencia estructural,– por dependencia de datos,– por dependencia de control.

• Múltiples unidades funcionales.

Page 15: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Formato de instrucciones DLX

• Carga/almacenamiento y operaciones con valores inmediatos, saltos condicionales:

• Operaciones aritméticas:

• Saltos incondicionales:

Page 16: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Máquina básicaMáquina básica no encauzada

Page 17: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Ciclos de cada instrucción• Ejecución de instrucciones en 5 ciclos

Page 18: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

DLX encauzado

• Etapas del cauce

• Búsqueda (IF)– se accede a memoria por la instrucción,– se incrementa el CP.

• Decodificación / Búsqueda de operandos (ID)– se decodifica la instrucción,– se accede al banco de registros por los operandos,– se calcula el valor del operando inmediato con el signo extendido

(por si hace falta más adelante).

• WB MEM EX ID IF– se almacena el resultado (si lo hay) en el banco de registros.

Page 19: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Máquina segmentada• Máquina segmentada

Page 20: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Ejecución de instrucciones segmentadas

• Ejecución de instrucciones segmentadas

Page 21: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Ejecución de instrucciones segmentadas

• Ejecución de instrucciones segmentadas

Page 22: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Ejemplo de ejecución de instrucciones

• Ejemplo de ejecución de instrucciones

Page 23: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Efecto de los stallses

• Efecto: el rendimiento disminuye del máximo teórico.• La ganancia de rendimiento, a reloj constante, es:• Máximo teórico: número de etapas del cauce.

Page 24: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Ejemplo de stole• Ejemplo:

– una instrucción de carga seguida de otras varias (la máquina tiene un único puerto de memoria).

Page 25: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Ejemplo del efecto del stole• Efecto:

– el load y la instrucción 3 tienen un conflicto: compiten por el puerto de memoria. El stole en el cauce:

Page 26: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

stallses por dependencia estructural

• Las limitaciones en los recursos implican stallses estructurales:– 1 puerto de memoria en lugar de 2; (fetchó

acceso a memoria).– 1 ALU en lugar de 2; (incremento PC ó

instrucción de proceso).– banco de registros con pocos puertos;

(lectura ó escritura).

• Solución a los stallses estructurales:– añadir más recursos, buscando un equilibrio

entre rendimiento y coste.

Page 27: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

stallses por dependencia de datos

• Código con dependencia de datos

Page 28: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Adelanto de resultados

• Solución a los stall ses por dependencia de datos:– reenvío/adelanto de resultados (bypassing,

forwarding).• La instrucción 1, que calcula el nuevo valor de

R1, lo tiene listo al final del ciclo 3.• La instrucción 2, que lo lee, en realidad necesita

que esté listo al principio del ciclo 4.• Se puede modificar la ALU con una

realimentación, para que el nuevo valor de R1 vaya de la salida a la entrada (además, sigue siendo enviado al banco de registros en la fase WB).

Page 29: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Ejecución con adelanto• La ejecución queda ahora:

Page 30: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Adelanto de resultados

• Adelanto de datos

Page 31: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Problemas del adelanto de resultados

• Observaciones al adelanto de resultados:• Se deben habilitar caminos de realimentación de todas a todas

las unidades: de la ALU a memoria, de la ALU a la ALU, etc.• Las dependencias se dan entre instrucciones de todos los tipos.• Hay que tener en cuenta que el control se complica aún más:

– hay que decidir cuándo se realimenta un resultado, controlar la realimentación, etc.

• Aun así, puede no ser suficiente; por ejemplo, si una instrucción de memoria genera un dato para una operación de la ALU:

• lw r1,0(r2)• sub r4,r1,r5

Page 32: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Problemas del adelanto de resultados

Page 33: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Dependencias de datos: clasificación

• Clasificación de las dependencias de datos:• Lectura después de Escritura (RAW, dependencia):

– una instrucción genera un dato que lee otra posterior (la que hemos visto hasta ahora).

• Escritura después de Escritura (WAW, dependencia en salida):– una instrucción rescribe un dato que otra posterior ya había

escrito;– en una máquina segmentada simple sólo se da si se permite

que las instrucciones se adelanten unas a otras.

• Escritura después de Lectura (WAR, antidependencia):– una instrucción modifica un valor antes de que lo lea otra

instrucción anterior;– tampoco se puede dar en nuestro cauce.

Page 34: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Ejemplos de dependencias de datos

• Ejemplos:– RAW:

• add r1,r2,r3• add r4,r1,4

– WAW: • lw r1,0(r2)• add r1,r2,r3

– WAR: • sw r1,0(r2)• add r1,r3,r4

Page 35: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Reordenación de instrucciones

• Aprovechamiento del cauce: reordenación de instrucciones

• Se trata de calcular:– a = b + c– d = e - f– g = a + d

Page 36: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Reordenación de códigoCódigo inicial Código reordenado

Page 37: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Eficacia de la reordenación• Eficacia de la reordenación

Page 38: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

stallses por dependencia de control

• stallses por dependencia de control• Hasta ahora: el CP se actualiza en la fase de búsqueda

(fetch).• Si en el cauce entra un salto, hay dos instrucciones que

pueden ser la siguiente que hay que buscar:– la que está a continuación del salto, o bien– la que es el destino del salto.

• Problema: necesitamos saber ya cuál es la siguiente instrucción que vamos a meter en el cauce, pero:– si es un salto condicional, aún no se sabe cuál de las dos es la

correcta (se sabe en la fase EX);– en cualquier caso, el contador de programa incrementado se

almacena en la fase (WB).

Page 39: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

stallses por dependencia de control

• Esto sólo sería importante si, en el código, el porcentaje de saltos (tomados y no tomados) es significativo.

Page 40: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Estadísticas de saltos

• En promedio, para enteros:– 13% de instrucciones son saltos condicionales hacia

delante,– 3% de instrucciones son saltos condicionales hacia atrás,– 4% son saltos incondicionales.

• Estos datos dependen fuertemente de las optimizaciones que use el compilador, pero como orientación sirven.

• Resumiendo:• 1 de cada 5 instrucciones es un salto.

• Conclusión: sí hay que tener en cuenta los saltos.

Page 41: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Estrategias frente a los saltos

• ¿Qué se puede hacer?• Plan A:

– en cuanto veamos que una instrucción es un salto, paramos el cauce, hasta que sepamos adónde salta;

– sabemos si es un salto en la fase ID;– conocemos el destino en MEM (usando

realimentación).• Total: 3 ciclos de stole.• Si el porcentaje de saltos es del 30%, y el CPI

ideal es 1, la máquina tiene una ganancia del 50% del máximo teórico aproximadamente.

• Conclusión: No interesa.

Page 42: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Estrategias frente a los saltos

• ¿Qué se puede hacer?• Plan B:

– intentamos averiguar, en una fase anterior, si el salto se toma o no;

– vamos calculando el destino lo antes posible, por si acaso hace falta;

– por ejemplo, en la fase de decodificación (ambas).

• Total: 1 ciclo de stole.• Necesitamos un recurso adicional (un sumador).• Si el porcentaje de saltos es del 30%, y el CPI ideal es

1, la máquina tiene ahora una ganancia del 77% del máximo teórico, aproximadamente.

• Conclusión: Puede interesar.

Page 43: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Rediseño para menor coste en saltos

Page 44: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Tratamiento de los saltos

• Formas de tratar un salto en el flujo de instrucciones:• no hacer nada:

– es el esquema más sencillo (y barato),– también es el que peor rendimiento da;

• suponer que el salto no se va a tomar:– se siguen buscando instrucciones a continuación del salto,– en caso de que se tome, se invalidan;

• suponer que el salto se va a tomar:– se calcula el destino, y se empieza a buscar por él– en nuestra máquina no es viable: se conocen el sentido y el

destino a la vez => no es suposición, es certeza• retardar la ejecución del salto:

– ejecutar la instrucción siguiente, tanto si el salto se toma, como si no.

Page 45: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Opción “suponer salto no se toma”

• Opción: suponer que el salto no se toma.

Page 46: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Opción “suponer salto no se toma”

Page 47: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

¿Tomamos salto o no?• Porcentaje de saltos tomados sobre el total de ejecutados:

Page 48: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Opción “suponer salto se toma”

• En promedio:– En programas de enteros, el 62% de los saltos

ejecutados se toman.– En programas de coma flotante, el porcentaje sube al

70%.• Por lo tanto:

– sería más interesante la opción de suponer que el salto se va a tomar (es más probable).

• Problema:– para buscar la instrucción destino del salto, es

necesario calcularla;– en nuestra máquina, este valor se obtiene en la fase

ID;– para entonces, también sabemos si el salto se toma o

no, por tanto ya no es necesario suponer.

Page 49: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Opción “retardar el salto”

• Opción de ejecución retardada del salto.– Cuando se llega a un salto, la siguiente instrucción se

ejecuta, tanto si el salto se toma como si no se toma (delay-slot).

• Implicaciones:– a la hora de generar código es necesario tener esto en

cuenta • => cambio en la compilación / programación;

– el número de instrucciones, situadas a continuación de un salto, que se ejecutan puede variar con la arquitectura;

– a veces no es posible utilizar el delay-slot para hacer trabajo útil

• => nop’s.

Page 50: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Relleno del delay-slot• Diferentes posibilidades para rellenar el delay-slot.

Page 51: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Aprovechamiento del delay-slot

• Requisitos para aprovechar el delay-slot.• Si las instrucciones se toman de antes del salto:

– no debe haber dependencia entre ellas y el salto;– siempre mejora el rendimiento.

• Si las instrucciones se toman del destino del salto:– no debe afectar al programa el que se ejecuten si el salto no se toma;– puede haber ocasiones en las que el código no se copie, sino que se

duplique (al destino se llega desde varios puntos);– sólo mejora el rendimiento si el salto se toma

• Si las instrucciones se toman de a continuación del salto:– no debe afectar al programa el que se ejecuten si el salto se toma;– sólo mejora el rendimiento si el salto no se toma.

Page 52: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Dificultades para el aprovechamiento• Problema:

– Puede ser difícil encontrar instrucciones a continuación del salto, o del destino, que no afecten al programa si se ejecutan cuando el salto se toma o no, respectivamente.

• Posibles soluciones:– Saltos con anulación (o cancelación):– se predice si se van a tomar o no (por el compilador);– se rellenan sus delay-slots con instrucciones según corresponda;

• si el salto se comporta…como lo esperado => todo bien;• al revés de lo esperado => se anula la ejecución de los delay-slots.

• Con esto se relajan los requisitos sobre las instrucciones que van en los delay-slots y se facilita su aprovechamiento.

Page 53: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Ejecución de los delay-slots• Ejecución de los delay-slots, en porcentaje sobre el total de los saltos

condicionales:

Page 54: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Uso de los delay-slots en la práctica

• Observaciones sobre el uso de delay-slots:– en promedio, el 30% se desperdician (35% en enteros, 25%

en coma flotante) o lo que es igual, hasta un 70% se aprovechan;

– sin embargo, en nuestra máquina, los saltos sólo tienen 1 delayslot; en otras, con cauces más largos, pueden tener más;

– esto puede hacer difícil el rellenarlos con trabajo útil;– lo mismo ocurre con procesadores superescalares (ya los

veremos en detalle: ejecutan varias instrucciones a la vez).• En resumen:

– los delay-slots tienen bastante utilidad en cauces sencillos, pero en cauces más complejos su efectividad es poca.

• Conclusión: ya no se usan.

Page 55: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Múltiples unidades funcionales

• Múltiples unidades funcionales• Problema: Unas instrucciones tardan más en

ejecutarse que otras.• Ejemplo: una multiplicación y un desplazamiento

lógico• Si el ciclo de reloj se ajusta a la más lenta, con

las rápidas (y con las demás etapas del cauce) se está perdiendo tiempo.

• Si el ciclo de reloj se ajusta a la más rápida, a las lentas no les da con un ciclo.

• Solución: Se segmenta también la fase de ejecución.

Page 56: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Cauce multifuncional

• El nuevo cauce:

Page 57: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Nuevo flujo de instrucciones

• El flujo de instrucciones a través del cauce es ahora:– las instrucciones pasan por las fases IF e ID;– a continuación, cada instrucción pasa a la unidad

funcional que le corresponda para su ejecución;– las instrucciones terminan el recorrido por su unidad

funcional, y pasan a recorrer las fases MEM y WB.• Es necesario modificar la máquina:

– añadiendo latches entre las fases de las unidades funcionales;

– posibilitando el flujo desde ID hasta cualquier unidad funcional;

– por supuesto, el control se complica (pero no demasiado).

Page 58: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Ejemplo de ocupación del nuevo cauce

• Ejemplo de ocupación del nuevo cauce• Se supone que las instrucciones no tienen dependencias

entre sí.• Las fases en cursiva indican cuándo se necesitan los datos.• Las fases en negrita indican cuándo se generan los

resultados.

Page 59: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Complicaciones de la multifunción

• Complicaciones que aparecen en el nuevo modelo:• Las posibilidades de dependencia (=>stallses)

aumentan:– algunas unidades funcionales están segmentadas y pueden

tener varias instrucciones en ejecución;– además, varias unidades funcionales pueden estar activas

simultáneamente.• Además los stallses serán más largos, puesto que el

cauce es más largo (dependiendo de la unidad funcional).

• Las instrucciones no tienen por qué terminar en orden:– cuidado con las dependencias en salida WAW;– puede haber varias instrucciones en la fase WB a la vez (hay

riesgo de conflicto estructural).• Buena noticia: las antidependencias WAR no pueden

darse.

Page 60: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Ejemplo de ejecución multifuncional

• Hay dependencias RAW de cada instrucción con la anterior. Esto implica stallses.

• La instrucción 4 necesita el resultado de la 3, pero para su fase MEM, por lo que puede pasar a la fase EX en el ciclo 13.

• Hay dependencias estructurales: en el ciclo 16, la instrucción 4 no puede almacenar el dato porque la instrucción 3 está usando la etapa de memoria.

Page 61: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

MIPS R4000

• El MIPS R4000• Representativo de arquitecturas que aparecieron a

partir de los años 80.• Es una máquina de 64 bits.• Implementa el repertorio MIPS-3.• Tiene un cauce con gran número de etapas

(supersegmentación).• Esto le permitía utilizar una frecuencia alta (100-200

MHz)• Utilizado por NEC, Nintendo, Silicon Graphics,

Sony,...

Page 62: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Cauce del R4000

Page 63: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

MIPS R4000

El retardo de una carga son dos ciclos (implica posible stole, si la siguiente instrucción necesita el dato).

Page 64: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Ejecución de un salto en el R4000

Cuál es el destino del salto, y si se toma, se sabe al fin de la fase EX; por lo tanto, la penalización son 3 ciclos.

Page 65: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Delay-slots en el R4000

• Los saltos en el R4000• El R4000 permite el aprovechamiento de un

delay-slot (aunque haya 3).• Para los otros dos slots, se predice que el salto

no se va a tomar y– ejecuta 2 instrucciones de la continuación del salto,

pero– si el salto se toma, se anula su ejecución,

• Dispone de instrucciones de ‘salt probablemente tomado’:– equivalentes a nuestro ‘salto con anulación’.

Page 66: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Coma flotante en el R4000

• Las operaciones de coma flotante:• Tiene 3 unidades funcionales:

– división,– multiplicación,– suma.

• La unidad de suma se usa también al final de la multiplicación y la división.

• La duración de las operaciones va de 2 ciclos para una negación a 112 ciclos para una raíz cuadrada.

Page 67: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Estadísticas de stallses en R4000

• Estadísticas de causas de stallses en el R4000:

Page 68: Estructuras segmentadas Noción de segmentación –Rendimiento. –Tipos de cauces. –Cauces no lineales y tablas de reserva. –Cálculo de latencias en cauces

Definiciones

• ILP: Nivel de paralelismo de instrucciones en arquitectura superescalar

• TLP: Ejecución de múltiples hilos al mismo tiempo. – Los dos metodos para lograr el TLP son:

• Multiprocesamiento a nivel de chip, chip-level multiprocessing (CMP)

• Multiples hilos simultáneo, simultaneous multithreading (SMT)– SMP incluye múltiples paquetes independientes

– En un alto nivel, es muy común construir computadores con múltiples CPU:

• totalmente independientes en arreglos, SMP – CMP, múltiples "núcleos" de procesador son incluidos en el mismo

paquete • Con acceso de memoria no uniforme (Non-Uniform Memory Access

(NUMA))– NUMA es considerado un modelo mucho más escalable, permitiendo

que en un computador posea más CPU que un SMP, debido a la perdida de performans