PRACTICA 2 Ejercicio 2

Loading....

Loading....

Loading....

Loading....

Loading....

Texto completo

(1)

PRACTICA 2 – Ejercicio 2

Simulación de Procesadores con Ejecución en Orden

DESCRIPCIÓN GENERAL

En esta práctica se utilizará el simulador KScalar y su interfaz gráfica con el objeto de estudiar el funcionamiento de un procesador con ejecución en orden cuya microarquitectura es segmentada, superescalar, y con memoria cache real. Se realizarán sucesivamente varias actividades de análisis de prestaciones que permitirán al alumno descubrir, de forma gradual, cómo afectan a las prestaciones globales del sistema procesador-memoria ciertos aspectos de su microarquitectura.

OBJETIVOS DOCENTES

¾ Comprender la problemática que introducen las dependencias de datos y control en las prestaciones de los procesadores segmentados

¾ Estudiar el funcionamiento de los procesadores con microarquitectura superescalar, en el caso de que la ejecución de instrucciones sea en orden.

¾ Estudiar la influencia de varias técnicas de predicción de saltos sobre las prestaciones del procesador

¾ Analizar la interacción entre el procesador y la jerarquía de memoria en el nivel de la memoria cache.

TIPOS BASICOS DE MICROARQUITECTURAS Parte 1. Ejecución en Orden

a. Procesador segmentado “Ideal” (Modelo “Ideal”): cache ideal (tiempo de acceso siempre 1 ciclo), predicción perfecta de saltos, monoescalar.

b. Procesador segmentado con predicción de saltos: cache ideal, predicción de saltos real, monoescalar.

¾ Modelo “Branch”: suponiendo que los saltos nunca saltan ¾ Modelo “BTB”: usando un BTB (“Branch Target Buffer”)

c. Procesador segmentado y superscalar (modelo “SuperScalar”): 2 instrucciones por ciclo (escalaridad 2), sin restricciones de unidades funcionales, cache ideal, predicción perfecta de saltos.

d. Procesador segmentado con cache de datos (modelo “Dcache”): cache L1 de datos real, predicción perfecta de saltos, monoescalar.

(2)

Parte 1. Ejecución en Orden

A. Procesador Segmentado Ideal (Modelo “Ideal”)

Resumen de Características

· Memoria cache ideal (siempre acierta con tiempo de acceso de 1 ciclo (clk)) · Predicción de saltos ideal (siempre acierta)

· 1 instrucción buscada, decodificada, y ejecutada por ciclo (monoescalar)

Descripción del Sistema Procesador/Memoria

5 etapas de segmentación:

ƒ IF:

° Cache L1 de instrucciones ideal (1 clk, siempre acierta)

° Predicción perfecta de la dirección de la siguiente instrucción para los saltos condicionales e incondicionales (dependencias de control)

ƒ ID:

° Detección de dependencias RAW (pueden frenar la ejecución de la instrucción) y dependencias WAW (se anotan, pero no frenan la ejecución)

° Arbitraje del puerto de escritura de resultados (puede frenar la ejecución) ° Lectura de hasta dos operandos fuente (registros)

ƒ EX:

° Ejecución comienza siempre en orden ° Unidades funcionales segmentadas

ALU (operaciones enteras y cálculo de direcciones): 1 clk Suma/Resta Punto Flotante: 4 clks Multiplicación Punto Flotante: 4 clks

ƒ MEM:

° Cache L1 de datos ideal (1 clk, siempre acierta)

ƒ WB:

° Escritura de hasta 1 resultado: si se detecta la violación de una dependencia WAW, la última escritura (fuera de orden) no se realiza, ya que el resultado no debe ser utilizado por las instrucciones posteriores

Diagrama de Bloques ,) ,' 0(0 :%

(;

0 0

0

$

$

(QWHURV 0XOWLSOLFDGRU3) 6XPD5HVWD3)

(3)

Parte 1. Ejecución en orden

B. Procesador Segmentado con Predicción de Saltos (Modelo “Branch” y

“BTB”)

Resumen de Características

· Memoria cache ideal (siempre acierta con tiempo de acceso de 1 ciclo (clk)) · Predicción realista de saltos (en ocasiones acierta y en otras falla)

· 1 instrucción buscada, decodificada, y ejecutada por ciclo (monoescalar)

Descripción del Sistema Procesador/Memoria

5 etapas de segmentación: IF, ID, EX, MEM, WB

ƒ IF:

° Predicción de Saltos simple (Modelo “Branch”): Salto no Tomado

Se buscan instrucciones consecutivas hasta que, en la etapa EX, se ejecute algún salto que resulte tomado (la penalización por fallo de predicción es de 2 clks) ° Predicción de Saltos con BTB (Modelo “BTB”)

Tamaño BTB: 32 entradas

Asociatividad: 4 vías (8 conjuntos)

Si la dirección de la instrucción buscada en la cache de instrucciones no reside en el BTB, se sigue la estrategia de predicción estática anterior (suponer salto no tomado)

Si se detecta un error de predicción con la estrategia anterior (aparece un salto tomado), la dirección de la instrucción de salto que provoca el error, junto con la dirección donde salta, se introducen en el BTB (penaliza 2 clks) Si la dirección de la instrucción buscada reside en el BTB, se utiliza la dirección almacenada en el BTB para predecir la dirección de la siguiente instrucción a buscar en la cache de instrucciones.

Si se detecta un error de predicción con la estrategia anterior (un salto registrado en la BTB resulta no tomado), se anula la entrada de la BTB (penaliza 2 clks) Diagrama de bloques

/&DFKH

3&

%7%

,)

(;

0 0

0

(QWHURV 0XOWLSOLFDGRU3)

(4)

Parte 1. Ejecución en orden

C. Procesador Segmentado y Superescalar (Modelo “Superescalar”)

Resumen de Características

· Memoria cache ideal (siempre acierta con tiempo de acceso de 1 ciclo (clk)) · Predicción de saltos ideal (siempre acierta)

· 2 instrucciones buscadas, decodificadas y ejecutadas por ciclo

Descripción del Sistema Procesador/Memoria

5 etapas de segmentación:

ƒ IF:

° 2 accesos independientes a la cache L1 de instrucciones

° Hasta 2 predicciones de saltos por ciclo

ƒ ID:

° Detección de dependencias RAW y WAW, incluyendo dependencias entre las dos instrucciones decodificadas

° Arbitraje de los dos puertos de escritura de resultados (puede frenar ejecución) ° Arbitraje del puerto de acceso a la memoria cache L1 de datos (puede frenar

ejecución)

° Lectura de hasta cuatro operandos fuente (registros)

ƒ EX:

° Ejecución comienza siempre en orden

° 2 unidades funcionales segmentadas para cada tipo de operación (sin restricciones funcionales en la etapa EX)

ƒ MEM:

° Cache L1 de datos ideal con un único puerto de acceso (1 clk, siempre acierta)

ƒ WB:

° Escritura de hasta dos resultados (puede ser que se haga fuera de orden)

Diagrama de bloques ,' :% (QWHURV 0XOWLSOLFDGRU3) 6XPD5HVWD3) ,) ,' 0(0 :%

(;

0 0

0

$

$

(5)

Parte 1. Ejecución en Orden

D. Procesador Segmentado con Cache de Datos (Modelo “ Dcache”)

Resumen de Características

· Memoria cache L1 de datos real (64 KB, 2-way associative) · Predicción de saltos ideal (siempre acierta)

· 1 instrucción buscada, decodificada, y ejecutada por ciclo (monoescalar)

Descripción del Sistema Procesador/Memoria

5 etapas de segmentación: IF, ID, EX, MEM, WB

ƒ MEM: cache L1 de datos

° Tamaño de la Dirección: 32 bits

° Tiempo de acierto: 1 clk

° Tamaño en bytes: 64 KBytes

° Tamaño línea: 64 Bytes

° Asociatividad: 2 vías (512 conjuntos)

° Política de remplazo: LRU

° Bus L1: 16 Bytes / clk

° Bus Memoria: 8 Bytes / clk

° Tiempo adicional para traer dato crítico de cache L2: 5 clks (1+3+1) ° Tiempo adicional para traer el resto de la línea: 3 clks (1+1+1) Secuenciamiento del acceso a la jerarquía de memoria:

(a)Acceso a cache L1 y verificación del tag (comprobar si está el dato o no) (b)Si falla L1, se accede a L2 (se pide el dato crítico en primer lugar) (c)El dato crítico, una vez recibido, es accesible por el procesador (d)Una vez recibida toda la línea de cache desde L2 se copia en L1

Diagrama de bloques

/&DFKH

'DWRV

/&DFKH

'DWRV

&RQWURO

0HPRULD

,) ,' 0(0 :%

(;

0 0

0

$

$

(QWHURV 0XOWLSOLFDGRU3) 6XPD5HVWD3) %86 / %86 /

(6)

Programa Ejemplo “vectprod.eio”

; Subroutine Vector_Product

;

---; multiplies vector A times vector B and puts result into variable C ;

; Pseudocode (C-like) ;

---; void VectProd(int len, float *A, float *B, float *C) ; {

; float tmp=0;

; for (;len; len--, A++, B++) ; tmp= tmp + (*A) * (*B); ; *C = tmp; ; } ; ; Input Variables: ; ---; r1: len (16) r2: A (0xA00) ; r3: B (0x A40) r4: C (0xA80) ; ; Local Variables: ; ---; tmp: f0 0> adds f31, f31, f0 1> beq r1, @10 2> lds f1, 0(r2) 3> lds f2, 0(r3) 4> muls f1, f2, f3 5> adds f0, f3, f0 6> addqi r2, 4, r2 7> addqi r3, 4, r3 8> subqi r1, 1, r1 9> br r31, @1 10> sts f0, 0(r4) 11> ret r31,(r26)

(7)

Microarquitecturas a estudiar en Práctica 2 – Ejercicio 2

¾Modelo “Ideal” con Anticipación.

ƒ Configuración Kscalar = ”<default>” ¾Modelo “Ideal” sin Anticipación.

ƒ Configuración Kscalar = ”<default>”

ƒ (Exec Core) Result Bypass = FALSE ¾Modelo “Branch”.

ƒ Configuración Kscalar = ”<default>”

ƒ (Branch Pred) Perfect TargPred=FALSE

ƒ (Fetch) Branch Perfect=FALSE ¾Modelo “BTB”.

ƒ Configuración Kscalar = ”<default>”

ƒ (Branch Pred) Perfect TargPred=FALSE

ƒ (Branch Pred) BTB Active=TRUE

ƒ (Fetch) Branch Perfect=FALSE ¾Modelo “SuperScalar”.

ƒ Configuración Kscalar = ”<default>”

ƒ (Superscalar) Decode Width=2

ƒ (Superscalar) Execution Width=2

ƒ (Superscalar) Fetch Width=2

ƒ (Superscalar) Retire Width=2 ¾Modelo “Dcache”.

ƒ Configuración Kscalar = ”<default>”

(8)

Cuestionario de la Práctica 2 – Ejercicio 2

1. ¿Cuáles son las combinaciones de instrucciones que producen ciclos de penalización por los tipos de riegos denominados WB y RAW en el programa vectprod.eio para el "Modelo Ideal con Anticipación"?. Rellenar la siguiente tabla para todos los casos de la primera y segunda iteración del programa “vectprod.eio”

Tipo de

Riesgo ejecuciónCiclo de Instrucción genera dato(etapa segmentación) Instrucción consume dato(etapa segmentación) penalizaciónCiclos de

Justificar los resultados.

2. Después de ejecutar todo el programa del apartado anterior y tomando los datos obtenidos por la utilidad de cálculo de estadísticas, justificar el número total de ciclos de penalización que el simulador indica.

3. Ejecutar todo el programa “vectprod.eio” para cada uno de los modelos descritos anteriormente y realizar los cálculos necesarios para rellenar la siguiente tabla:

Modelo Ciclos CPI Speed-Up

La medida del Speed-Up se realiza tomando como referencia el Modelo “Ideal” con Anticipación, que aparece referenciado más arriba como "<default>". Comentar y justificar los resultados.

4. Mencionar cuál es la configuración que produce mayor Speed-Up y cuáles son las razones que ocasionan el mayor nivel de prestaciones. ¿Por qué el procesador superescalar no proporciona un Speed-Up=2?.

5. ¿Cuáles son las instrucciones que producen penalización debido a fallos en la predicción de saltos en el modelo BRANCH?. Justificar el número total de ciclos de penalización que el simulador indica.

6. ¿Por qué sólo se producen 7 ciclos de penalización cuando se activa el predictor de saltos de tipo BTB (Modelo “BTB”)?.

(9)

7. ¿Qué instrucciones de acceso a memoria producen las penalizaciones por fallo de acceso a la memoria cache L1 de datos en el modelo “Dcache”?. Justificar el número total de ciclos de penalización que el simulador indica.

8. Combinar en un gráfico los resultados obtenidos respecto al número de ciclos totales, CPI, y los números de ciclos para cada tipo de penalización. En el eje de abscisa se visualizarían los distintos modelos, y para cada uno de estos aparecería varias barras indicando ciclos (ejecución o penalización diferenciada por tipo). Incluir también una tabla donde aparezcan los datos numéricos de la figura.

9. Repetir el apartado 3 para el programa “go.eio” después de haber ejecutado al menos 20 Millones de instrucciones.

10. Realizar una gráfica donde se visualicen en un diagrama de barras los resultados obtenidos para CPI y Speed-Up en los apartados 3 y 9. En el eje de abscisa se pondrán un grupo de barras para cada programa, y existirá una barra por cada modelo de microarquitectura. Comentar la gráficas y los resultados obtenidos.

11. Repetir los apartados 9 y 10 para los programas: GCC (gcc.eio), PERL (perl.eio), APPLU (applu.eio), SU2COR (su2cor.eio), MGRID (mgrid.eio), IJPEG (ijpeg.eio). Todos estos programas se encuentran en el fichero “eio.zip”. Comentar y justificar los resultados.

Figure

Actualización...

Referencias

Actualización...

Related subjects :