XIII JORNADAS DE PARALELISMO-LLEIDA , SEPTIEMBRE
2002
19
SPEC CPU y Caches en Chip: Evolución e Interacción Jesús Alastruey, Oscar Blasco, Pablo Ibáñez, José Luis Briz y Víctor Viñals. Resumen— Los recursos de la memoria cache en chip no han sido estudiados con una perspectiva evolutiva, a diferencia de otros parámetros tecnológicos. Por otra parte, es sabido que el rendimiento de la memoria cache en chip no depende únicamente de la tecnología, sino del software que ejecuta. Como las caches, el software también aumenta en tamaño y complejidad, y es de interés estudiar la relación entre ambas tendencias evolutivas. Este trabajo observa experimentalmente el comportamiento sobre la memoria de SPEC CPU 89, 92, 95 y 2000, analiza la evolución de las caches en chip en las principales familias de micros entre 1989 y 2001, y estudia la interacción entre SPEC CPU y las caches en chip de primer nivel y sus tendencias evolutivas. Palabras Clave— SPEC CPU, cache en chip, tendencias en tecnología y complejidad del software.
I. INTRODUCCIÓN
en un trabajo presentado en el 1975 en el IEEE International Electron Devices Meeting, afirmando que el número de transistores se duplicará cada 18 meses (59% anual, x2,5 cada dos años). Sus predicciones se han cumplido con toda precisión en el mercado de DRAM desde el año 1971 hasta hoy [11]. En la Tabla I se resumen datos de dos fuentes relativos al crecimiento en tecnología y prestaciones de micros [7][12]. Los aumentos en las escalas de integración en SRAM y en lógica son exponenciales, pero de pendientes ligeramente inferiores a los de DRAM. P. Gelsinger, considerando los micros de vanguardia1 de Intel desde el año 1971 determina que el crecimiento de los transistores en chip es de x2 cada 2 años [7]. El último informe de la SIA [12] prevé una desaceleración en estas mejoras en el horizonte 2002-07: crecimiento bianual x2 para DRAM y x1,6 para SRAM y lógica.
a evolución de los parámetros de las memoria cache L en chip (on-chip) a lo largo del tiempo difiere según familias y arquitecturas: así, por ejemplo, mientras Alpha
Tabla I. Crecimientos bianuales en integración y prestaciones para
y MIPS presentan un aumento gradual del tamaño de cache y asociatividad, HP-PA ha pasado de no incluir cache en chip a integrar recientemente Megabytes.
Intel, desde 4004 (71) hasta P4 (2000)
micros de vanguardia. Datos de Intel [7] y de SIA [12].
nº trst/chip en micros
En los procesadores CISC de la arquitectura IA-32 el crecimiento de las caches en chip ha sido más moderado. La reciente aparición del P4 con una cache de 256 KB de segundo nivel rompe esta tendencia. El crecimiento de los parámetros de las caches en chip no es el único factor que determina la evolución de su rendimiento. Las aplicaciones y sistemas operativos, al aumentar también de tamaño y complejidad pueden anular los beneficios de tal crecimiento. Si fijamos un microprocesador con sus caches en chip y lo sometemos al paso del tiempo, en unos pocos años los índices de rendimiento (como la tasa de fallos) pueden disminuir de forma significativa. Estas reflexiones nos llevan a una pregunta genérica que intentaremos responder en este trabajo: ¿Podemos cuantificar el crecimiento en complejidad y tamaño del software y correlacionarlo con el rendimiento de las sucesivas generaciones de cache en chip? Antes de presentar el núcleo del trabajo comentaremos las tendencias en tecnología relacionadas con las caches en chip y las tendencias en programación relacionadas con crecimientos en complejidad y presión sobre la memoria.
A. Tendencias en tecnología y prestaciones Gordon E. Moore revisa sus previsiones del año 1965 Financiado por el proyecto TIC98-0511-C02 de la CICYT. Dpto. Informática e Ingeniería de Sistemas. U. Zaragoza. c/ Mª de Luna 1, 50015 Zaragoza. e-mail:
[email protected]
x2
x1,145 superficie x1,8 densidad
Intel, desde i486 (89) hasta P4 (2000)
Prestaciones
x2,4
x2,2 frecuencia
x1,7 tecnología x1,3 segmentación
x1,1 microarquitectura
SIA, 2002-07 x1,6
x 1,0 sup. x 1,6 dens.
SIA, 2002-07
x1,6 frecuencia
no disponible
Frec. bus < x1,6 Externo
De acuerdo con [7], la ganancia en prestaciones de la familia Intel en la última década es x2,4 cada 2 años. La mayor parte de este crecimiento es debido al incremento en frecuencia (x2,2 bianual). Para el período 2002-07, la SIA [12] anuncia también una deceleración de este parámetro (x1,6 cada 2 años). Por otra parte, [8] cuantifica la disminución del tiempo de acceso a DRAM: el tiempo de acceso a fila disminuye un 7% anual (x0,87 cada 2 años) y el tiempo de acceso a columna un 25% anual (x0.56 cada 2 años). A partir de estos datos y los de la Tabla I, puede calcularse la tendencia del desnivel entre velocidades o speed gap: factores bianuales de x1,90 para el acceso a fila y x1,24 en el acceso a columna. En [2] se calcula un crecimiento bastante más conservador, de x1,25 para el acceso a fila en micros CISC del período 1974-1993. 1
Lead microprocessors en el artículo citado. Aquellos que inauguran una nueva microarquitectura de características sustancialmente diferentes, tales como una segmentación mejorada y más profunda.
20
J. ALASTRUEY Y COL: SPEC CPU Y CACHES EN CHIP: EVOLUCIÓN Y RENDIMIENTO
B. Tendencias en aplicaciones Las aplicaciones y sistemas operativos también evolucionan a lo largo del tiempo, bien para aprovechar la evolución tecnológica, bien empujándola, o las dos cosas a la vez [11][5]. Por su parte, [8] cuantifica el crecimiento de la cantidad de memoria demandada por el programa medio y sus datos: un factor anual de x1,5 a x2. N. Myhrvold, estudiando la evolución del software de Microsoft entre los años 1975 y 1995 [9], observa que su tamaño y complejidad aumenta más rápido que el hardware: la Ley de Moore se queda corta para el software. Su Primera Ley del Software lo explica magníficamente: “El software es un gas. Se expande hasta ocupar completamente el volumen del hardware que lo contiene” En este trabajo estamos interesados en reflexionar sobre la relación entre cache en chip y software desde un punto de vista evolutivo y cuantitativo. La dificultad principal estriba en disponer de una serie temporal de programas de prueba que responda a la evolución del mercado y en la definición de métricas operativas de complejidad y tamaño. Nosotros vamos a estudiar SPEC CPU 89, 92, 95 y 2000, midiendo la evolución de varias métricas sencillas. Se afirma que estos programas ejercen una baja presión sobre las caches en comparación con aplicaciones comerciales o de supercomputación [6][3][10], por lo que las conclusiones no deben perder de vista este hecho. La interacción programa/cache también es difícil de cuantificar de forma sencilla. El rendimiento de las caches en chip depende en primer término de la tasa de fallos, pero otros parámetros pueden ser también críticos: ejecución en desorden, número de puertos, ancho de banda, prebúsqueda, número máximo de fallos pendientes, latencia, etc. Para simplificar vamos a considerar únicamente la evolución de la tasa de fallos. El resto del trabajo se estructura como sigue: en la siguiente sección presentamos la evolución de las caches en chip para las principales familias de micros RISC y CISC, y confeccionamos un dimensionado concreto para la cache típica de primer nivel en micros RISC. En la Sección III analizamos SPEC CPU 89, 92, 95 y 2000 compilado para SPARC, extrayendo varios índices de complejidad y tamaño. En la Sección IV observamos el rendimiento de las caches anteriores, cruzando generaciones de programas y de cache. En la Sección V presentamos las conclusiones del trabajo.
bilizado como dentro del chip En la Figura 1 puede observarse la evolución temporal del tamaño de la cache en las familias consideradas. El eje de abcisas indica el año de introducción al mercado; el eje de ordenadas mide tamaño de la cache en chip y millones de transistores que forman el chip completo (triángulos). La barra clara representa el tamaño del primer nivel (suma de cache de instrucciones y de datos) y la barra oscura el tamaño de la cache de segundo nivel (unificada, si existe). Tabla II. Familias de micros estudiadas
Familias
RISC
CISC
Alpha, MIPS, HP, Sparc, PowerPC
Intel, AMD
Las líneas siguen las aproximaciones exponenciales relacionadas con estas tres cantidades. El número añadido a cada línea es el factor de crecimiento bianual, obtenido de la recta de regresión del logaritmo de los datos (método de linealización de los datos [14]). En el resto del trabajo se sigue siempre este método. El segundo nivel de cache en chip aparece en contados casos, lo cual impide ver tendencias claras. Por tanto, en este trabajo nos centraremos en el primer nivel. Entre familias se observan diferencias significativas en cantidad y factor de crecimiento. PA y Alpha (aunque con distintas jerarquías) destacan por incluir en el chip las caches más grandes y por crecer con los mayores factores. La tendencia general más apreciable es el aumento simultáneo del tamaño de cache y del número de transistores. De hecho, los factores de crecimiento del número total de transistores y del tamaño total de cache en chip (niveles uno y dos) son muy parecidos o idénticos en todas las familias. Esto nos lleva a una conclusión importante: los diseñadores dedican una fracción prácticamente constante de recursos de chip a las caches. En la Tabla III se presentan los factores de crecimiento de las clases RISC y CISC, calculados agrupando todos los micros de la Figura 1 en una u otra clase. Se añade el comportamiento de la DRAM hasta el 2001 y la predicción de la SIA hasta el 2007 [14]. Tabla III. : Factores de crecimiento bianual del tamaño de cache en chip y de DRAM. L1 = primer nivel. L2 = segundo nivel.
Crecimientos bianuales
II. EVOLUCIÓN TEMPORAL DE LA CACHE EN CHIP En este apartado estudiamos la evolución temporal de la memoria cache en el chip. Vamos a identificar y comparar las tendencias de las arquitecturas RISC y CISC. Además, queremos determinar la cache típica de cada año, para luego medir su interacción con SPEC CPU. Se han seleccionado 31 micros de vanguardia (9 CISC y 22 RISC, ver Tabla II), entre los años 1989 y 2001, recopilándose tres parámetros para cada nivel de cache en chip: tamaño, tamaño de bloque y asociatividad. La bibliografía completa utilizada aparece en [1]. Como criterio de análisis, la cache en el package (caso del Intel Pentium Pro o Pentium II) no se ha conta-
Memoria
RISC
CISC
L1 Instr.
1,94
1,96
L1 Datos
2,14
1,27
L1 I + D
2,05
1,59
L1 + L2
2,43
1,76
DRAM, hasta el 2001
2,52 (x4 cada 3 años)
DRAM, 2001-2007 [12]
2
Lógica, 2001-2007 [12]
1,6
El crecimiento de los distintos tamaños de caches es mayor en las familias RISC que en las CISC, hechos más acusados para la cache de datos de primer nivel (L1
XIII JORNADAS DE PARALELISMO-LLEIDA , SEPTIEMBRE
2002
21
4096
x2,6
512 256 21164
x1,7
21264
128 64
x2,5
32 21064
16 8 4 2
1992
1994 Año de aparición
1997
PA 8600
PA 8500
1024
x2,5
512 256 128
PA 7300LC
64
x2,7
32 16 8 4 2
2001
1995 Año de aparición
512
1998
2000
256
128 UltraSPARC III
x1,8
64 32
UltraSPARC
UltraSPARC II
16
x1,8
8 4 2
1995 1996 Año de aparición
MIPS
128 R12000
R10000
64
x1,6
R4400 R8000
32 R4000
16
x1,8
8 4 2
1999
1992
512
1993
1994 1996 Año de aparición
1998
512 P4
7450 (G4+)
PowerPC
256
x1,8
Tamaño de la cache (KB) / Transistores x 10e6
256 Tamaño de la cache (KB) / Transistores x 10e6
2001
512
UltraSPARC Tamaño de la cache (KB) / Transistores x 10e6
Tamaño de la cache (KB) / Transistores x 10e6
PA
2048
1024
256
PA 8700
4096 21364
ALPHA
Tamaño de la cache (KB) / Transistores x 10e6
Tamaño de la cache (KB) / Transistores x 10e6
2048
128 740 (G3)
620
7400 (G4)
x1,3
64 604
32
x1,8
603
16 8 4 2
1993
1994 1995 Año de aparición
1997
1999
2001
Intel
128
x1,7 64 P3
32
P2 Pentium
16 486DX
Pentium Pro
x1,5
8 4
x1,7
2
1989
1993
1995 Año de aparición
1997
1999
2000
512
Tamaño de la cache (KB) / Transistores x 10e6
256
Leyenda
AMD
AMD K7-Athlon
128 AMD K6
64 32
AMD K5
Cache de segundo nivel en chip (L2)
x2,3
Número de transistores en el chip
16 8
Cache de primer nivel en chip (L1I + L1D)
Tendencias exponenciales: x2,3
Tamaño L1I + L1D
4
Tamaño L1 + L2
2
Número de transistores en el chip 1995 Año de aparición
1997
1999
Fig. 1. Evolución temporal del tamaño de la cache en chip y del número total de transistores en micros de vanguardia para las familias estudiadas. Nótese que hay dos escalas en los ejes de ordenadas: una para las familias Alpha y PA, y otra para el resto de familias.
Datos) y para el total de cache en chip (L1 + L2). El total de cache en chip (L1 + L2) para RISC ha crecido de forma similar a la DRAM (x2,4), mientras que en CISC lo ha hecho por debajo de la lógica (x1,8). Predecir el comportamiento futuro siguiendo las cautelas de la SIA relativas al crecimiento de la DRAM y de la lógica para el 2001-07, implica augurar un parón en el crecimiento. Sin embargo, como veremos en la Sección III y en la Sección IV, la presión del software parece empujar en sentido contrario.
Cache típica de primer nivel Para determinar en cada año los valores de los parámetros de una cache típica, hemos optado por el siguiente procedimiento: a cada micro se le ha dado una
vigencia de tres años: el año de aparición y los dos siguientes. A continuación hemos seleccionado en cada año la moda de cada parámetro (tamaño de cache, de bloque y asociatividad). En caso de duda se ha ponderado más el micro actual y menos el micro antiguo. Este procedimiento proporciona una estimación conservadora de tamaños y asociatividades. Por ejemplo, en el caso RISC los tamaños de la familia PA no han sido seleccionados nunca. Las tablas IV y V muestran el resultado de esta selección en base a los micros de la Figura 1. En el caso CISC no se ha incluido estimación para el bienio 00-01 por los pocos representantes disponibles. Una constante en toda época y familia es el tamaño de bloque: 32B. Sin embargo, a partir del 97 la cache de
J. ALASTRUEY Y COL: SPEC CPU Y CACHES EN CHIP: EVOLUCIÓN Y RENDIMIENTO
datos de algunas familias empieza a tener 64B (Alpha, AMD y MIPS). El aumento de asociatividad es gradual en los RISC, y es más brusco y va por delante en los CISC, estando al principio de la década en el grado 4. Tabla IV. Selección de caches en chip de primer nivel desde el año 1992. Micros RISC. Tamaño en KB, Bloque en Bytes.
Año 1992-93
Instrucciones
Datos
Tamaño Asoc Bloque
Tamaño Asoc Bloque
8
1
32
8
1
32
1994-95
16
1
32
16
1
32
1996-97
16
2
32
16
1
32
1998-99
32
2
32
32
2
32
2000-01
32
4
32
64
4
32
Tabla V. Selección de caches en chip de primer nivel desde el año 1992. Micros CISC. Tamaño en KB, Bloque en Bytes.
Año 1992
Instrucciones
Datos
Tamaño Asoc Bloque
Tamaño Asoc Bloque
8
4
32
(unificada)
1993-94
8
2
32
8
2
32
1995-96
8
4
32
8
2
32
1997
8
4
32
16
4
32
1998-99
16
4
32
16
4
32
La evolución del tamaño de la cache típica en micros RISC sigue una tendencia diferente a la de los CISC. La evolución de los RISC es muy gradual, en cambio, en los CISC hay un salto marcado en los años 96-97.
III. EVOLUCIÓN DE SPEC CPU En esta sección vamos a mostrar índices sencillos de complejidad para las cuatro generaciones de SPEC CPU ejecutándose en un micro RISC. Nos centramos en medidas dinámicas: número de instrucciones ejecutadas y volumen de los datos referenciados. En [1] se detallan también medidas estáticas y más datos sobre el entorno de compilación y ejecución. Para que la comparación sea limpia, hemos producido en todos los casos binarios optimizados de 32 bits (sin utilizar SPARC V9 de 64 bits para SPEC 2000). En la compilación se ha respetado el escenario temporal de cada generación. Por tanto, se ha utilizado la arquitectura SPARC V7 con SPEC89 y SPEC92, SPARC V8 con SPEC95 y SPARC V8+A con SPEC2000. Se han ejecutado todos los programas de todas las colecciones de principio a fin, utilizando todos los conjuntos de datos de entrada de referencia (ref en terminología SPEC). La única excepción ha sido el programa sc (SPECint 92), que no ha podido simularse. Las medidas se han obtenido con Shade, una herramienta de Sun Microsystems que genera dinámicamente trazas de la ejecución en modo usuario que son tratadas en directo por una aplicación de análisis o de simulación [4].
A. Número de instrucciones ejecutadas Como medida de complejidad adoptamos el número de instrucciones ejecutadas por cada colección. Para ello sumamos todas las instrucciones ejecutadas por todas las instancias de los programas (algunos se ejecutan n veces con n entradas diferentes). Añadimos al total de SPECint92 la media de instrucciones ejecutadas por programa para simular la aportación de sc. En la Figura 2 se presentan dichas medidas por separado para los programas enteros (línea con triángulos), para los de coma flotante (línea con cuadrados) y para la suma total (línea con círculos). También se incluyen las tendencias bianuales. En cada colección, los programas de coma flotante ejecutan un mayor número de instrucciones que los enteros. Sin embargo, en las últimas generaciones de SPEC se observa una tendencia a la igualación. Posiblemente esta tendencia sea objetivo de SPEC; por ejemplo, en SPECint 2000, 7 de sus 12 programas se ejecutan varias veces con diferentes entradas, mientras que en SPECfp 2000 sólo uno de los 14 programas repite. Asumiendo que la siguiente generación de SPEC siga los factores de crecimiento de la Figura 2, tanto SPECint 2004 como SPECfp 2004 ejecutarán en torno a 32 Tinstr. Los factores de crecimiento bianuales que aparecen en la Figura 2, están muy por encima de los crecimientos expuestos en las secciones anteriores. En particular, procede comparar el factor x2,8 de crecimiento de SPEC (int +fp), con el factor x2,4 de crecimiento de prestaciones mostrado en la Tabla I. Si las colecciones SPEC representan correctamente al mercado, podemos afirmar que la complejidad del software crece más que la potencia del hardware. Por el contrario, si el software va detrás de la oferta hardware, podemos concluir que el crecimiento de las colecciones SPEC está sobredimensionado. Pensamos que este es un punto importante, pero que su esclarecimiento precisa más información. 10
10 Instrucciones x 10e9
22
4
SPEC SPECfp SPECint
x2,8 x2,6 x3,1
3
tendencias bianuales 10
10
2
1
1989
1992
1995 SPEC
2000
Fig. 2. Instrucciones ejecutadas en las colecciones SPEC y tendencias.
B. Volumen de memoria referenciada En este apartado vamos a dar medidas sencillas y directas de localidad, contabilizando el volumen de posiciones de memoria visitadas por todas o por un cierto porcentaje de referencias. Para ello vamos a contabilizar el número de referencias que recibe cada bloque de 32B. La lista de todos los bloques referenciados forma el volumen total visitado. A
XIII JORNADAS DE PARALELISMO-LLEIDA , SEPTIEMBRE
2002
23
partir de la lista ordenada podemos construir un volumen parcial. Por ejemplo, el volumen del 50% de las referencias, se obtiene seleccionando el número mínimo de bloques que acumulan el 50% de las referencias. En las gráficas siguientes presentaremos los volúmenes del 50% y del 90%. Estos volúmenes no tienen valor predictivo, pero indican la presión ejercida sobre la jerarquía de memoria y orientan sobre las posibilidades de un determinado tamaño de cache. Para cada colección SPEC se ha calculado la media aritmética del volumen total y los parciales del 50 y 90%, distinguiendo entre las referencias a instrucciones (Figuras 3 y 4) y a datos (Figuras 5 y 6). En cada programa se ha hecho a su vez otra media aritmética si debe ejecutarse con varios conjuntos de entrada. Además cada gráfica incorpora la cache típica obtenida en la Sección II.A (línea de rombos). La línea del volumen total (círculos) se ha enriquecido con los volúmenes de cada programa para dar una medida de dispersión. En los volúmenes parciales se ha observado una tendencia similar y se omiten los puntos. 1024 512
Tocados 90% ref 50% ref Tamaño Cache
256 128
SPEC2000
64 Kbytes
0.14 32
SPEC92
0.94
0.44
0.28
1.75
1.09
8
SPEC95
4 2 1
SPECint
0.5 1989
1992
1995
SPEC 2000 merece mención aparte, pues aunque aumenta el número de referencias, los volúmenes parciales son relativamente muy pequeños. Esto posiblemente implica que en SPEC 2000 se ha buscado aumentar el número total de instrucciones ejecutadas a base de procesar grandes conjuntos de datos. B.2. Datos Los volúmenes totales son mucho más grandes y presentan un crecimiento exponencial bastante claro. SPECint crece desde 1 hasta algo menos de 64MB (factor x2,3) y SPECfp crece desde 2 hasta algo más de 64 MB (factor x2,1). El volumen del 50% para SPECint es pequeño (832KB) y crece lentamente (x 1,6). Es muy comparable a la cache tipo de primer nivel. El volumen del 50% para SPECfp es muy superior (128KB-8MB) y crece igual que el volumen total (x2,1). Es muy superior a las caches tipo de primer nivel, que deberán aumentarse o colaborar con un segundo nivel más grande para no perder prestaciones. En resumen, el volumen del 50% está por debajo del 1% de los bloques para SPECint y ronda el 6-10% para SPECfp, pero el volumen del 90% supone entre un medio y un cuarto de todos los bloques visitados, lo cual imposibilita su captura en el chip (estamos hablando de 16-32MB en año 2000).
16 1.72
trucción, lo que da una idea de la gran localidad de estas aplicaciones. Y entre el 4,7% y el 7,4% de los bloques de instrucciones generan el 90% de las búsquedas, lo cual supera la conocida regla del 10/90. El comportamiento de SPECfp es muy similar, pero con porcentajes de bloques referenciados un poco mayores.
262144
2000
Fig. 3. Bytes de instrucciones que acumulan el 50%, 90% y 100% de las referencias (SPECint) 1024 512
131072 65536
Tocados 90% ref 50% ref Tamaño Cache
32768 16384
Tocados 90% ref 50% ref Tamaño Cache
8192
SPECint
4096 2048 Kbytes
256 128
SPEC2000
128 0.003
Kbytes
512 256
SPEC2000
64
1024
32
SPEC92
0.24
0.59
64
0.24
0.77
SPEC92
32
16 0.93
6.7
0.60
1.6 7.2
16
9.3
4.6
1992
1995
8
8
2.4
4 4
SPEC95
1 0.5
SPEC95
2 1989
2
SPECfp 1989
2000
Fig. 5. Bytes de datos que acumulan el 50%, 90% y 100% de las referencias (SPECint). 1992
1995
2000
262144
Fig. 4. Bytes de instrucciones que acumulan el 50%, 90% y 100% de las referencias (SPECfp)
131072 65536
Tocados 90% ref 50% ref Tamaño Cache
32768 16384
B.1. Instrucciones
8192 4096 2048 Kbytes
No existe crecimiento en el volumen total. El volumen medio en SPECint está en la franja 128-256KB y en SPECfp ronda los 128KB.
1024 512
SPEC2000
256 128
El volumen del 50% es muy pequeño tanto para SPECint como para SPECfp: unos 2KB. El volumen del 90% es moderado: 16KB para SPECint (comparable o por debajo de la cache de instrucciones) y 8KB para SPECfp (siempre por debajo de la cache). En SPECint, entre el 0,6% y el 1,2% de los bloques de instrucciones generan el 50% de las búsquedas de ins-
8.0
64
SPEC92
32
2
5.1
16.7
9.0
1992
1995
8 4
4.4 10.6
16
SPECfp 1989
SPEC95 2000
Fig. 6. Bytes de datos que acumulan el 50%, 90% y 100% de las referencias (SPECfp).
24
J. ALASTRUEY Y COL: SPEC CPU Y CACHES EN CHIP: EVOLUCIÓN Y RENDIMIENTO
IV. SPEC CPU Y CACHE EN CHIP
V. CONCLUSIONES
Hasta ahora se han visto por separado las tendencias tecnológicas relativas a cache en chip y las tendencias de SPEC CPU en número de instrucciones y en presión a la jerarquía de memoria. En esta Sección vamos a ver la interacción entre la cache tipo definida en la Sección II.A y las diferentes generaciones de SPEC CPU.
La contribución de este trabajo ha sido la observación experimental de: i) la evolución de la complejidad y la presión sobre la memoria en SPEC CPU, ii) la evolución de las caches en chip y, iii) la interacción entre la cache de primer nivel y SPEC CPU. Podemos destacar los siguientes hechos en el período analizado (1989-2001):
Para ello se ha simulado la cache típica de cada año con la generación de SPEC CPU vigente en ese año, realizando medias aritméticas entre todos lo programas (y otra media previa si el programa tiene varios conjuntos de entrada). Se ha utilizado SPEC92 desde 1992 hasta 1995, ambos inclusive, SPEC95 desde 1995 hasta 2000, y SPEC2000 para los años 2000 y 2001. Las tasas de fallos de instrucciones y datos están representadas en la Figura 7. Los mismos datos están colocados numéricamente cerca de la línea de cache tipo (rombos) en las cuatro últimas figuras de la Sección anterior.
•
La fracción de recursos del chip dedicados a cache es constante.
•
El crecimiento de la cache en chip ha sido próximo al de la DRAM para RISC (x2,4)1, y por debajo al de la lógica para CISC (x1,8).
•
La complejidad de SPEC CPU medida en número de instrucciones ejecutadas crece en un factor x2,8, por encima de la ley de Moore (x2,5).
•
El volumen de instrucciones referenciadas se mantiene prácticamente constante en todo SPEC CPU y es muy pequeño.
•
El volumen total de referencias a datos crece x2,3 en SPECint y x2,1 en SPECfp. Esto entra en clara contradicción con las hipótesis de otros autores [8], que cifran este crecimiento en un factor x2,6-x4.
Excluyendo la última muestra (año 2000-01, SPEC 2000) los fallos de la cache de datos disminuyen uniformemente con el tiempo (desde el 9,3% hasta el 1,6% para SPECint; desde el 16,7% hasta el 4,4% para SPECfp). Sin embargo, a pesar de la clara mejora cuantitativa en los parámetros de la cache 2000-01, las tasas de fallos se disparan por encima del 6,7% / 8% (SPECint / SPECfp).
•
Las discrepancias de crecimiento entre volumen de datos y tamaño de cache de primer nivel, junto con el repunte en la tasa de fallos de SPEC 2000, parecen sugerir que el crecimiento del primer nivel de cache de datos puede mantenerse o incluso aumentar.
En general, puede decirse que la presión a la cache de datos es significativa, y que en algunos casos el acceso a memoria de datos puede ser recurso crítico.
[1]
Los fallos de la cache de instrucciones son muy escasos y disminuyen con el tiempo (desde el 1,7% hasta el 0,14% para SPECint; desde el 0,9% hasta el 0.003% para SPECfp). O sea, la presión sobre la cache de instrucciones es mínima.
No queda clara la tendencia de la interacción cache SPEC CPU en el futuro, pero posiblemente la creciente presión del software se vea aliviada por la combinación de la ejecución fuera de orden y las posiblemente muy grandes caches de segundo nivel. En todo caso, las discrepancias de crecimiento mostradas en la Figura 5 y en la Figura 6 entre volúmenes y cache, y el repunte en la tasa de fallos, parecen sugerir que el crecimiento en primer nivel de datos debe mantenerse o incluso aumentar. SPEC92 SPEC95
SPECint
2
VI. BIBLIOGRAFÍA
[2] [3] [4]
[5] [6] [7]
SPECfp
Tasa de fallos (%)
SPEC2K
[8]
1.5
1
[9]
0.5
0 92
93
94
95
96
97
98
99
00
01
92
93
94
95
96
97
98
99
00
01
Cache de instrucciones
Tasa de fallos (%)
20
SPECint
SPECfp
[10] [11]
15
[12]
10
5
[13]
0 92
93
94
95
96
97
98
99
00
01
92
93
94
95
96
97
98
99
00
01
Cache de datos
[14]
J. Alastruey, O. Blasco, P. Ibáñez, J.L. Briz y V. Viñals.”SPEC CPU y Caches en Chip: Evolución y Rendimiento“. RR-06-02, Junio 2002. Dpto. Informática e Ing. de Sist. U. de Zaragoza. K. Boland and A. Dollas. “Predicting and Precluding Problems with Memory Latency“. IEEE Micro, 14(4):59-67, 1994 M.J. Charney and T.R. Puzak. “Prefetching and Memory System Behavior of the SPEC95 Benchmark Suite“. IBM Journal of Research and Development, 41(3), May 1997. R.F. Cmelik, D. Keppel. “Shade: A Fast Instruction-Set Simulator for Execution Profiling,’’ Proceedings of the 1994 ACM SIGMETRICS. Conference on the Measurement and Modeling of Computer Systems, pp 128-137, May 1994. M.J. Flynn. Computer Arquitecture: pipelined and parallel processor design. Jones and Bartlett Publishers, Boston MA, 1995 J.G. Gee, M.D. Hill, D.N. Pnevmatikatos, and A.J. Smith. “Cache Performance of the Spec92 Benchmark Suite”. IEEE Micro, 13(4):17-27, 1993. P.P. Gelsinger. “Microprocessors for the New Millennium: Challenges, Opportunities, and New Frontiers“. In Digests of 2001 IEEE ISSC Conf., pp. 22-25, Feb. 2001. J.L. Hennessy and D.A. Patterson. Computer Architecture: a Quantitative Approach. Morgan-Kaufman, San Francisco, CA, 1996. A. S. Tanembaum. Structured Computer Organization (sección 1.3.1). Prentice-Hall, Upper Saddle River, NJ, 1999. S. Sair and M. Charney. “Memory Behavior of the SPEC2000 Benchmark Suite“. IBM Res. Report, RC 21852 (98345) 6 Oct. 2000, 22 pp. R.R. Schaller. “Moore’s Law: Past, Present, and Future“. IEEE Spectrum, 34(6):52-59, 1997. SIA. International Technology Roadmap for Semiconductors. 2001 Edition. SPEC: Standard Performance Evaluation Corporation. http:// www.spec.org, September 2000. J.H. Mathews, K.D. Fink. Métodos numéricos con Matlab, pp285-286. Prentice-Hall, Madrid 2000.
Fig. 7. Evolución de la tasas de fallos de datos e instrucciones para la cache típica de un micro RISC (ver Tabla IV). 1
Todos los factores de crecimiento son bianuales.