PRACTICA 2 Ejercicio 3

Loading....

Loading....

Loading....

Loading....

Loading....

Texto completo

(1)

PRACTICA 2 – Ejercicio 3

Análisis de la Memoria Cache L1 de Datos para

Procesadores Superescalares con Ejecución Fuera de

Orden

DESCRIPCIÓN GENERAL

El objetivo de este ejercicio práctico consiste en obtener el nivel de prestaciones del sistema Procesador-Memoria que se puede observar en la Figura 1. Está compuesto por un procesador superescalar con ejecución fuera de orden, predicción perfecta de los saltos, varios niveles de superescalaridad, y un sistema de memoria completamente ideal a excepción de la memoria cache L1 de datos. En este ejercicio se analizará la influencia de tres parámetros de diseño de las memorias cache: capacidad de almacenamiento, asociatividad, y tamaño de línea. El nivel de prestaciones vendrá determinado por las siguientes medidas: tCPU, AMAT, IPC, y frecuencia de fallos. En la metodología de análisis

se utilizará el simulador KScalar y dos programas benchmarks SPEC2000 (uno de tipo entero y el otro de punto flotante).

Figura 1. Organización del sistema Procesador-Memoria METODOLOGIA

La metodología práctica consiste en la realización secuencial de una serie de pasos que se describen a continuación. Todos ellos suponen que el entorno software de trabajo corresponde al del sistema operativo Linux – Red Hat.

1. Instalar las herramientas que se proporcionan en la página web de la asignatura (serdis.dis.ulpgc.es/~ii-ao). En los ejercicios anteriores ya se instaló KScalar

Procesador Superescalar Cache L1 Instrucciones Ideal Cache L1 Datos REAL Cache L2 Unificada Ideal

(2)

dentro del directorio KScalar. Ahora, dentro de este directorio se debe copiar y descomprimir el fichero pra2-3.tar.gz. En este fichero se encuentran los siguientes directorios y ficheros:

§ /KScalar: en el directorio raíz del simulador se almacenará después de ejecutar el programa prepara un fichero denominado ws_b.spt, donde b

indica el nombre del benchmark (por ejemplo ws_gcc_166.spt). Este fichero será el que habrá que ejecutar para lanzar conjuntamente todas las simulaciones asociadas a un determinado benchmark.

§ /KScalar/cnf: donde están los ficheros de configuración del sistema procesador-memoria (ws_x_yK_zw_aB.cnf, ws_x_0_0_0.cnf). x

indica la superescalaridad del procesador (1, 2, 4, 8). y indica la capacidad de la memoria cache L1 de datos (128 KB, 64 KB, 32 KB, 16 KB, 8 KB, 4 KB, 2 KB, 1 KB). w indica la asociatividad de la memoria cache (1w: correspondencia directa, 2w: asociativa de 2 vías, 4w: asociativa de 4 vías, nw: completamente asociativa). a indica el tamaño de la línea de cache (8 B, 16 B, 32 B, 64 B). Por ejemplo, ws_2_64K_4w_8B.cnf indica que se simula con un procesador superescalar de 2 vías, y una memoria cache L1 de datos de: 64 KB, asociativa por conjuntos de 4 vías, y tamaño de línea de 8 bytes. Adicionalmente,

ws_4_0_0_0.cnf indica que el procesador es de superescalaridad 4 y la memoria cache L1 de datos es ideal, es decir, que no falla nunca.

§ /KScalar/prepara: el programa prepara genera los ficheros

ws_x_yK_zw_aB.spt y ws_x_0_0_0.spt en el directorio

/KScalar/scripts. Para la correcta situación de los ficheros, prepara se debe ejecutar dentro del directorio /prepara.

§ /KScalar/cmd: donde se incluye el fichero ws.cmd, el cual establece el cálculo de estadísticas dentro de KScalar.

§ /KScalar/scripts: donde se situarán los ficheros scripts (ws_x_yK_zw_aB.spt, ws_x_0_0_0.spt). Cada uno de ellos lanza la simulación de una configuración de la cache de datos para un benchmark determinado. Adicionalmente, se encuentra el fichero ws2.spt que debe estar presente siempre.

§ /KScalar/log: donde se almacenan los ficheros resultados de las distintas simulaciones: ws_b_x_yK_zw_aB.log, ws_b_x_0_0_0.log. § /KScalar/patrones: donde se encuentra el programa patronesAC, el cual genera los resultados del análisis de prestaciones para cada benchmark y

(3)

configuración procesador-memoria: tCPU, AMAT, IPC, frecuencia de fallos y

solapamiento.

§ /KScalar/eio: donde se almacenarán los dos ficheros benchmark

*.eio que proporcionará el profesor a cada grupo de prácticas.

§ /KScalar/cacti: donde se encuentra el fichero parametros.log. 2. Ejecutar prepara en el directorio /KScalar/prepara para cada benchmark

*.eio con el objetivo de generar los ficheros /KScalar/scripts/*.spt. § Cuando aparezca “Fichero eio =>“: introducir la raíz del fichero benchmark que se vaya a analizar. Por ejemplo: gcc_166, perlmake,

ijpeg, etc.

§ Cuando aparezca “Número de ventanas 100 Kins simulación =>“: introducir 20. Esto indica que se realizarán la simulación de 20 intervalos de 100,000 instrucciones, es decir, 2,000,000 instrucciones.

§ Cuando aparezca “Número de ventanas 100 Kins skip (dividelo por 10) =>“: introducir 2. Esto indica que en cada configuración se realizarán inicialmente la simulación de 20 intervalos de 100,000 instrucciones para realizar la inicialización de los datos del programa benchmark en la cache (calentamiento).

§ Repetir los pasos anteriores para cada uno de los dos benchmarks asignados. § Como resultado de la ejecución del programa prepara se deben generar los ficheros *.spt en el directorio /KScalar/scripts y en el directorio

/KScalar.

3. Ejecutar ws_b.spt en el directorio /KScalar. Dependiendo del computador utilizado, las simulaciones para cada benchmark pueden durar más de 1 hora. Como resultado de las simulaciones se crean los ficheros

/KScalar/log/*.log.

4. Ejecutar patronesAC en el directorio /KScalar/patrones. Este programa pide la raíz del fichero benchmark *.eio sobre el que se ha realizado las simulaciones, así como la superescalaridad del procesador que se quiere analizar. Cada superescalaridad requiere una nueva ejecución del programa patronesAC. A continuación analiza los ficheros *.spt para obtener finalmente las medidas de prestaciones: tCPU, AMAT, IPC, frecuencia de fallos y solapamiento.

5. Representar los resultados de tCPU. Para cada benchmark y superescalaridad se

(4)

determinada organización de memoria cache L1 real. Para la primera figura, el eje X debe representar la capacidad total de la memoria cache L1 de datos, y el eje Y la asociatividad. Para la segunda figura, el eje X debe representar la capacidad total de la memoria, y el eje Y el tamaño de la línea. Y para la tercera figura, el eje X debe representar el tamaño de línea, y el eje Y la asociatividad. Dimensionar los valores representados en el eje Z para que el rango de variación se encuentre entre los valores máximo y mínimo de tCPU que han resultado para el

benchmark correspondiente.

6. Comentar los resultados respondiendo a las siguientes preguntas.

§ Pregunta 1. La configuración de memoria cache L1 de datos que proporciona mayor nivel de prestaciones, ¿es la misma para cada una de las siguientes medidas: tCPU, AMAT, IPC, frecuencia de fallos?. En el caso de que no sea así,

¿por qué se produce este efecto?.

§ Pregunta 2. Para cada superescalaridad del procesador, ¿qué configuración de memoria cache L1 de datos real proporciona realmente el mayor nivel de prestaciones?, ¿por qué?.

§ Pregunta 3. Todos los procesadores se han configurado para realizar “Ejecución Fuera de Orden”. ¿Qué relación observas en el solapamiento ocurrido entre la ejecución de las instrucciones y los fallos de la memoria cache?.

MEDIDAS DEL NIVEL DE PRESTACIONES

Las medidas de las prestaciones del sistema Procesador-Memoria que se utilizarán en esta práctica son: tCPU, AMAT, IPC, frecuencia de fallos, y solapamiento. A continuación

se describen las expresiones matemáticas utilizadas para su cálculo dentro del programa

patronesAC. La interpretación de estas fórmulas ayudarán a responder a las preguntas del apartado anterior.

Tiempo Promedio de Acceso a la Memoria (AMAT) AMAT = tHIT,L1 + f ´ tP ´ (1 – S) [ns]

tHIT,L1 : tiempo de acierto en la memoria cache L1. Sus valores se encuentran en el

fichero /KScalar/cacti/parametros.log y están expresados en nanosegundos (ns).

f = Miss / número de accesos a memoria : frecuencia de fallos en L1. Miss : Número de fallos en la memoria cache de datos L1.

(5)

tP = tHIT,L2 + número bytes de línea L1 / BWL1-L2: tiempo de penalización por fallo en

L1 que coincide con el tiempo que se requiere para cargar una línea de L1 desde L2. Está medido en ns.

tHIT,L2: tiempo de acierto en L2. Se supone que coincide con 14.2 ns.

BWL1-L2 : ritmo de transferencia entre L1 y L2. Se supone que coincide con 8 GB/s.

S = { (tHIT,L2 / tHIT,L1) – [ (ciclosReal – ciclosIdeal) / Miss ] } / (tHIT,L2 / tHIT,L1) :

solapamiento del tiempo de penalización debido a la ejecución fuera de orden del procesador superescalar.

ciclosReal : ciclos que invierte el procesador en ejecutar el intervalo de 2,000,000

instrucciones cuando la memoria cache de datos L1 es real.

ciclosIdeal : ciclos que invierte el procesador en ejecutar el intervalo de 2,000,000

instrucciones cuando la memoria cache de datos L1 es ideal, es decir, que no falla nunca. Tiempo de Ejecución del Programa (tCPU)

tCPU = ciclosReal ´ tHIT,L1 [ns]

tCPU se mide en ns., y se supone que el periodo de reloj del procesador superescalar

coincide con el tiempo de acierto en L1. Número de Instrucciones por Ciclo (IPC)

IPC = N / ciclosReal

N : número de instrucciones ejecutadas (2,000,000).

ORGANIZACIÓN DE LA PARTE DE LA MEMORIA DE LA PRACTICA 2 DESTINADA A DESCRIBIR LOS RESULTADOS DEL EJERCICIO 3

La parte de la memoria que se entregue como justificante de haber realizado la Práctica 2 y que describa el trabajo realizado para el Ejercicio 3 debe incluir los siguientes apartados.

General. Indicar qué benchmarks se han utilizado, el tiempo que ha necesitado la máquina para realizar las simulaciones asignadas, y la configuración de la máquina donde se han realizado dichas simulaciones (tipo procesador y su frecuencia de funcionamiento,

(6)

tipo y cantidad de memoria RAM, cantidad de memoria swap, versión del sistema operativo Linux).

Metodología. Aquí se incluirán aquellos aspectos de la metodología que se hayan realizado en el Ejercicio 3 y que han sido diferentes a los expresados en este guión en párrafos anteriores.

Tablas. Para cada uno de los dos benchmarks se incluirá una tabla donde se muestren los valores de las medidas de prestaciones (tCPU, AMAT, IPC, frecuencia de fallos, y

solapamiento) para cada configuración del procesador y memoria cache L1 (512 configuraciones en total). Identificar bien las tablas para poder saber en qué condiciones de simulación se obtuvieron.

Figuras. 12 representaciones 3D de tCPU para cada benchmark, 3 para cada

superescalaridad del procesador, 1 para capacidad vs. asociatividad, 1 para capacidad vs. tamaño de línea, y 1 para tamaño de línea vs. asociatividad. Identificar bien las figuras.

Comentarios. Incluir aquí los comentarios referentes a las preguntas incluidas en este guión.

Material a entregar.

¾Documento impreso cuya organización se acomoda a la descrita más arriba. Los tres ejercicios de la Práctica 2 se entregarán en un único documento.

¾Ficheros *.log: ws_b_x_yK_zw_aB.log, ws_b_x_0_0_0.log

¾Ficheros resultados del programa patronesAC. Para guardar los resultados de este programa hacer lo siguiente en una terminal Linux: patronesAC > ws_b_x.pat, donde x indica la superescalaridad del procesador.

Fecha de entrega máxima. Viernes 30 de Enero de 2004. Después de esta fecha, la puntuación máxima se reducirá un 2% diario. No se podrá presentar la memoria después de faltar una semana para la fecha final de entrega de actas. Las personas que vayan a entregar esta práctica para las convocatorias extraordinaria o especial considerarán que la fecha de entrega máxima coincide con la fecha del examen de convocatoria. A partir de ese día, la nota máxima se reduce un 2% diario hasta una semana antes de la fecha de entrega de actas. Después de esta fecha, las entregas de prácticas se tomarán en consideración para la siguiente convocatoria. Esta práctica es valorable para las convocatorias ordinaria y extraordinaria del curso 2003/2004 y la convocatoria especial del curso 2004/2005.

Figure

Actualización...

Referencias

Actualización...

Related subjects :