El Cuello de Botella entre el Procesador y la Memoria: 
Problemas y Soluciones.

por Nihar R. Mahapatra y Balakrishna Venkatra

Traducción de Fernando Berzal

Sinopsis

El tasa de crecimiento de la velocidad de los microprocesadores supera a la de la DRAM (RAM Dinámica). Así que, si bien la disparidad entre la velocidad del procesador y de la memoria es ya un hecho, en el futuro será aún mayor. Por lo tanto, los diseñadores de computadoras se enfrentan a una creciente brecha de rendimiento entre el procesador y la memoria (Processor - Memory Performance Gap [1]), la cual es ahora el obstáculo fundamental para mejorar el rendimiento de los sistemas de cómputo. Este artículo examina el problema y también sus diversas soluciones.

Introducción

Motivación y Contexto

El sistema de memoria de un ordenador es el almacén para toda la información usada y producida por la unidad central de procesamiento de la computadora (CPU). El incremento fenomenal en el rendimiento de los microprocesadores emplaza exigencias significativas en el sistema de memoria. Un sistema de memoria perfecto es aquél que puede suministrar inmediatamente cualquier dato que la CPU solicite. No obstante, la memoria ideal no es implementable en la práctica, ya que tres factores (capacidad, velocidad y coste) se contraponen. Una solución económica es, entonces, una jerarquía de memoria organizada en varios niveles, cada uno más pequeño, rápido y caro por byte que el siguiente. El objetivo es suministrar un sistema de memoria con un coste casi tan bajo como el nivel de memoria más barato y una velocidad casi tan rápida como el nivel más rápido. El concepto de jerarquía de memoria aprovecha el principio de localidad. En breve, este principio pone de manifiesto que se accederá de nuevo en breve a las palabras de memoria a las que se haya accedido (localidad temporal) y que  se accederá a las palabras de memoria adyacentes a la que se accede poco después de ese acceso (localidad espacial). Además, cuanto más pequeño más rápido - el hardware más pequeño será generalmente más rápido que el más grande. Este simple principio es particularmente aplicable a las memorias construidas con tecnología similar por dos razones. En primer lugar, las memorias más grandes tendrán un mayor retardo para las señales y requerirán más niveles de decodificación de las direcciones para buscar el dato requerido. En segundo lugar, se pueden obtener memorias pequeñas más rápidas que memorias grandes para la mayor parte de las tecnologías. Esto se debe principalmente a que el diseñador puede usar más potencia por celda de memoria en un diseño menor. Las memorias más rápidas están generalmente disponibles con menor número de bits por chip, y cuestan bastante más por byte. Basándose en las razones anteriores, las jerarquías de memoria de las computadoras de propósito general modernas contienen:

Métricas de rendimiento

El rendimiento de un sistema de cómputo está directamente relacionado con el tiempo de ejecución, que viene dado por

Tiempo de CPU  = IC * CPI * Período de reloj

IC = Número de instrucciones ejecutadas
CPI = Número medio de ciclos de reloj requeridos por instrucción

El rendimiento de un ordenador depende de la interfaz entre el procesador y la memoria. Si ésta no es adecuada, puede producirse un significativo aumento del CPI. Una medida mejor, que captura la esencia de lo anterior, es el tiempo medio de acceso a memoria.

Tiempo medio de acceso a memoria = Tiempo de acceso a caché + Tasa de fallos * Penalización.

donde el tiempo de acceso a caché [hit time] corresponde a un acierto de caché, la tasa de fallos [miss rate] es la fracción del número de accesos que provocan un fallo de caché y la penalización [miss penalty] son los ciclos de reloj adicionales que consume un fallo de caché.

Los dos parámetros que caracterizan la interfaz procesador-memoria son:

La brecha de rendimiento entre el procesador y la memoria

El ritmo de crecimiento en la velocidad de los microprocesadores excede al de la memoria DRAM. Existen varias razones que explican esta disparidad creciente. La división de la industria de semiconductores en los campos de microprocesadores y memorias es la primera, aunque esto tiene sus propias ventajas. En primer lugar y ante todo, una línea de fabricación puede ajustarse a la medida de las necesidades del dispositivo. Las líneas de fabricación de microprocesadores usan transistores veloces para hacer una lógica rápida y muchas capas de metal para acelerar la comunicación y simplificar la disipación de potencia, mientras que las líneas de fabricación de DRAMs emplean muchas capas de polisilicio para conseguir tanto celdas DRAM pequeñas como pequeñas corrientes de pérdidas para reducir la frecuencia de refresco de las DRAMs. Chips separados también denota empaquetamiento separado, permitiendo que los microprocesadores empleen costosos empaquetados que disipan bastante potencia (de 5 a 50 watios) con cientos de pins para conexiones más anchas con la memoria externa, mientras que las DRAMs usan empaquetados baratos que disipan poca potencia (1 watio) y tienen sólo unas docenas de pins. El empaquetado por separado a su vez permite que los diseñadores de computadores ajusten el número de chips de memoria independientemente del número de procesadores.

Tener la industria dividida en dos campos - fabricantes de memoria y fabricantes de procesadores - también tiene sus desventajas inherentes. Mientras el rendimiento de los microprocesadores ha estado mejorando un 60% al año, el tiempo de acceso a las DRAM ha mejorado menors de un 10% anual [2]. Por tanto, aunque ambos están mejorando exponencialmente, el exponente para los microprocesadores es substancialmente mayor que para las DRAMs. Las diferencias entre exponenciales divergentes también crece exponencialmente; así que, si bien la disparidad entre la velocidad del procesador y la de la memoria es ya un hecho, en el futuro será aún mayor. Por lo tanto, los diseñadores de computadoras se enfrentan a una brecha creciente de rendimiento entre el procesador y la memoria, la cual es ahora el obstáculo fundamental para mejorar el rendimiento de los sistemas de cómputo.


La brecha de rendimiento entre el procesador y la memoria

Dada la creciente latencia de acceso a memoria (medida en ciclos de procesador), cualquier petición que provoque un fallo de caché consumirá eventualmente cientos de ciclos de reloj en satisfacerse. Así que la velocidad del sistema estará dominada por el rendimiento de la memoria. Cuantitativamente el problema subyacente es la reducción del tiempo medio de acceso a memoria. Ésta implica la mejora de cada uno de los tres factores: tiempo de acceso a caché, penalización y tasa de fallos (véase en [1] una discusión más detallada de la optimización de cada uno de los tres parámetros). Sin embargo, estas técnicas de reducción de la latencia pueden incrementar las necesidades del procesador de ancho de banda de memoria al hacer que el procesador solicite la misma secuencia de operandos en menos tiempo o pida más datos de la memoria. Por tanto, la implementación de técnicas agresivas de reducción de latencia agravan los bloqueos del procesador [stalls] debido al ancho de banda finito con la memoria, que en realidad llegan a ser más significativos que los bloqueos debidos a la latencia sola. Así que latencia y ancho de banda de memoria están íntimamente relacionados. La mejora del ancho de banda de memoria es crítica para soportar técnicas agresivas de latencia de memoria. El rango de técnicas para mejorar el ancho de banda efectivo de la memoria incluye [3]:

  1. Conexiones más anchas y rápidas con la memoria.

  2. Como se indicó anteriormente, el ancho de banda de memoria es la cantidad de bits de datos trasferidos por segundo. Por lo tanto, las estrategias tradicionales para mejorar el ancho de banda de memoria incluyen acelerar el reloj de memoria (para reducir las latencias de acceso) y aumentar en ancho del bus. En las DRAMs convencionales, estas técnicas están alcanzando sus límites prácticos. Mientras que el escalado de la frecuencia de reloj causa estrictas restricciones de temporización en el sistema, las cuales requieren un modelado preciso de los componentes y la tarjeta de circuito impreso (PCB), el incremento de la anchura del bus se consigue a costa de el incremento del número de pines, el incremento de la potencia de E/S y la creación de problemas mecánicos de layout de las PCBs. Aunque han ocurrido grandes incrementos en el número de pines recientemente -y grandes adelantos en la tecnología de los empaquetados sin duda aparecen en el horizonte-, restricciones de fiabilidad, potencia y, especialmente, coste impedirán que los pines aumentes en un número comparable al ritmo de crecimiento del rendimiento de los procesadores. No hace mucho, novedosos interfaces para sistemas de memoria como Rambus (RDRAM) y Synchronous link (SLDRAM) han aparecido que prometen anchos de banda del orden de varios gigabytes por segundo. Otra técnica para conseguir mayor ancho de banda es el entrelazado de memoria, pero se obtiene a costa de un coste adicional y problemas asociados a la expansión de la memoria. La cuestión clave no es si se puede obtener un ancho de banda suficiente con cada generación, sino si obtener lo suficiente para cada generación es rentable.
     

  3. Cachés on-chip más grandes.

  4. Cachés más grandes mejoran el ancho de banda efectivo enviando menos peticiones (fallos) a través de las interconexiones. Actualmente, las cachés en un chip están alcanzando el rango del megabyte. Aunque cachés de este tamaño podrán contener los conjuntos de trabajo de muchas aplicaciones, siempre habrá programas cuyos patrones de acceso no sean cacheables. También habrá programas con conjuntos de trabajo demasiado grandes para entrar en esas cachés. Además, cachés más grandes aumentan el coste del sistema.
     

  5. Ordenación de acceso dinámico [4]

  6. Este método maximiza el  rendimiento de la memoria para "streaming" (p.ej., procesamiento de señales/imágenes, compresión y descompresión multimedia). Esta estrategia se basa en la ordenación de los accesos, cambiando el orden de las solicitudes a memoria para mejorar el ritmo al que esas solicitudes pueden atenderse por un sistema de memoria con tiempos de acceso no uniformes. Este método combina una estrategia hardware y software: el compilador prepara al procesador para transmitir un caudal de información a un SMC, o Stream Memory Controller, or SMC, en tiempo de ejecución, y el SMC dinámicamente reordena el acceso, intentando realizarlo en una secuencia que maximice el ancho de banda efectivo de memoria. El procesador realiza sus peticiones de memoria en el orden natural del cálculo y los datos se almacenan en el controlador hasta que sean solicitados por el procesador (para lecturas de memoria) o se escriben en memoria por el controlados (para escrituras en memoria).
     

  7. Cachés on-chip más eficientes.

  8. Aunque las cachés son bastante eficaces para capturar la localidad espacial y temporal en una secuencia de referencias dinámicas, lo hacen de forma burda y están lejos del óptimo. Un intento de mejorar el contenido de las cachés es el Proyecto Impulse [5]. Impulse es una nueva arquitectura del sistema de memoria que añade dos características importantes a un controlador de memoria tradicional. En primer lugar, Impulse permite optimizaciones para aplicaciones específicas mediante un mapeado configurable de las direcciones físicas. Mediante éste, las aplicaciones pueden controlar cómo se accede y cómo se almacenan en caché sys datos, lo que les permite mejorar su utilización de la caché y el bus. En segundo lugar, Impulse soporta prebúsqueda en el controlador de memoria. Con ella, el sistema de memoria puede ocultar muchos de los accesos a DRAM. Al no requerir modificaciones en la caché del procesador ni en el diseño del bus, Impulse puede adaptarse a un sistema convencional.
     

  9. Integración lógica/DRAM.

  10. La brecha procesador-memoria se está convirtiendo en un impedimento creciente para el rendimiento, lo cual podría desplazar el enfoque hacia la integración del procesador en el mismo dado que la memoria principal (o en el mismo empaquetado). Esto elimina la necesidad de caras conexiones entre chips con un alto ancho de banda. Sin embargo, como se mencionó con anterioridad, las diferencias entre la fabricación de procesadores (lógica) y memoria da lugar a desafíos para hacer factible esta tecnología. Se está investigando mucho en esta área. El proyecto Intelligent RAM (IRAM) de la University of California at Berkeley [2] es particularmente notable.

El paradigma CC (Computación por Compresión)

Otro método interesante para mejorar el ancho de banda efectivo de una interconexión es la compresión. Investigadores han propuesto y/o implementado esquemas que utilizan compresión para los datos, direcciones y código. Todos estos esquemas incrementan el ancho de banda efectivo con la memoria a costa de algo de hardware adicional entre CPU y memoria. Tendencias actuales de la tecnología (capacidad de cómputo creciendo más barata en relacion con la comunicación cara) harán la compresión más atractiva en el futuro.

Funcionamiento de la caché y Teoría de la Información

Una forma alternativa de ver el funcionamiento de la memoria caché es que oculta trabajo por la redundancia en la secuencia de solicitudes de direcciones realizadas a la memoria por el procesador. Es esta redundancia la que permite al simple algoritmo de búsqueda por demanda predecir acertadamente las futura demanda del procesador. En un conocido  estudio sobre el tema [6], Hammerstrom mostró que generalmente no hay más de un 1% de información contenida en una traza de direcciones. Dado el conocimiento de las referencias pasadas, 99 de cada 100 bits de direcciones de las referencias hechas a memoria por el procesador son predecibles. El restante bit de información representa la ocurrencia de referencias a nuevas localidades no determinables hasta el momento de ejecución del programa.

Por tanto, el paradigma Computación por Compresión (CC, Computing by Compression) es particularmente interesante al sacar a relucir una pregunta importante: ¿Estamos realmente comunicando información entre la memoria y la CPU? ¿Cuánto puede explotarse la redundancia en la información que se intercambia entre el procesador y la memoria? Por ejemplo, ya sabemos que los programas exhiben localidad espacial y temporal. En la circunstancia anterior, ¿es realmente sabio dedicar un acumulado número de líneas de dirección (pines) para comunicar esas direcciones cuando sus características temporales y espaciales pueden aprovecharse mejor? Consecuentemente, se hace muy importante analizar el presente tráfico (datos, instrucciones y direcciones) y explotar la redundancia subyacente para idear técnicas de compresión específica que envíen la información óptima entre el procesador y la memoria.
 

Trabajo relacionado

  1. Creación un bus más ancho con técnicas de caché [7]

  2. El uso efectivo del ancho de banda de un bus (canal de comunicación) puede incrementarse usando variantes de técnicas de compresión de datos que aprovechen el "Principio de Localidad" de los valores de los datos. La compactación se realiza almacenando los bits de orden superior en una tabla y enviando el índice en la tabla con los bits de orden inferior. Una tabla coherente en el receptor expande la palabra en su forma original. Las unidades de compactación/expansión pueden colocarse entre la memoria y el procesador, entre el procesador y el bus local y entre los dispositivos que acceden al bus del sistema.
     

  3. Compresión de direcciones mediante registros base [8]

  4. Con el incremento en el espacio de direcciones, más y más líneas de dirección se requieren para la comunicación de direcciones entre el procesador y la memoria. Sin embargo, el número de pines impone limitaciones. Las secuencias de referencias a direcciones exhiben una gran localidad temporal y espacial, y son, en consecuencia, muy predecibles. Por tanto, una palabra de dirección típica contiene muy poco contenido de información. Almacenando las porciones de mayor orden de las referencias a direcciones de memoria en un conjunto de registros base dinámicamente asignados, se hace posible la transmisión de pequeños índices de registros entre el procesador y la memoria en vez de los bits de orden superior de la dirección, incrementado de esta forma el ancho de banda disponible.
     

  5. Compresión de instrucciones en sistemas empotrados [9, 10]

  6. Este método se usa básicamente para comprimir programas en procesadores empotrados, donde el tamaño de la memoria de instrucciones domina el coste. En este método, un analizador examina un programa compilado y reemplaza secuencias comunes de instrucciones con una única palabra de código de instrucción que hace de puntero a un diccionario (mantenido al lado del procesador) que contiene las secuencias de instrucciones que representa. Por tanto, se puede obtener una compresión efectiva de los programas. Otras investigaciones han intentado usar ideas de la compresión de textos para la reducción eficiente del tamaño del código.
     

Conclusión

El problema del Muro de Memoria [11] es está volviendo cada vez más importante y está aflorando como el mayor impedimento de rendimiento de sistemas microprocesadores. Es hora de comenzar a pensar cómo evitar tropezar con este muro. Aunque muchas técnicas se han sugerido para evadir este problema, la mayor parte de ellas proporcionan una mejora en el ancho de banda o la latencia. A pesar de que retrasan la fecha del impacto, no cambian los fundamentos. La resolución más conveniente sería el descubrimiento de una tecnología estupenda de memoria densa cuya velocidad aumentase al ritmo de la de los procesadores. Ya que nada concreto se ha dirigido en este sentido, una buena estrategia en el presente sería realizar cambios a nivel arquitectónico. El concepto CC tiene un gran potencial pero requiere más investigación y análisis antes de una implementación real.
 

Referencias

1
 John L Hennessy and David A Patterson, Computer Architecture: A Quantitative Approach, Morgan Kaufman, CA, 1996.
2
 David Patterson, Thomas Anderson et al., A Case for Intelligent RAM : IRAM, IEEE Micro, April 1997.
3
 D. Burger, J.R. Goodman, and A. Kagi. Memory Bandwidth Limitations of Future Microprocessors, Proc. 23rd Ann. Int'l Symp. Computer Architecture, Assoc. of Computing Machinery, pp. 79-90, Aug. 1996.
4
 McKee, S.A. Dynamic Access Ordering : Bounds on Memory Bandwidth, University of Virginia, Technical Report CS-94-14, April 1994.
5
 J. Carter et al. Impulse: An Adaptable Memory System. Submitted to 5th Int'l Symp. Computer Architecture, Assoc. of Computing Machinery, Jan 1999.
6
 Hammerstrom, D. and E. Davidson. Information Content of CPU Memory Referencing Behavior, Proc. 4th Ann. Int'l Symp. Computer Architecture, Assoc. of Computing Machinery, pp. 184-192. March 1977.
7
 L. Rudolph and D. Criton. Creating a Wider Bus using Caching Techniques. Proc. 1st Int'l Symp. High Performance Computer Architecture. IEEE Comp Society Press, pp. 90-99. 1995.
8
 M. Farrens and A. Park. Dynamic Base regsiter caching: A Technique for reducing address bus width. Proc 18th Int'l Symp. Computer Architecture, ACM, pp.128-137. 1991.
9
 T. Mudge and P. Bird. An Instruction stream Compression Technique. Proc of Micro -30, Dec 1997.
10
 Srinivas Devadas et al. A text Compression based method for code size minimization in Embedded System. To appear in ACM TODAES., Vol 4, No 1, Jan 1999.
11
 Wm. A. Wulf and Sally A McKee. Hitting the Memory wall: Implications of the Obvious. Computer Architecture News, 23(1), pp. 20-24, March 1995.
FIGURA insertada con permiso de Dr. David A Patterson, University of California, Berkeley.

Quiere más artículos acerca de Arquitectura de Computadores? Vaya al índice o al anterior.


Acerca de los autores:

Dr Nihar Mahapatra es Profesor Asociado en el Departamento de Informática e Ingeniería de la Universidad Estatal de Nueva York en Buffalo. Sus intereses incluyen Arquitectura de Computadores, Procesamiento Paralelo y Diseño VLSI.

Balakrishna Venkatrao es un estudiante graduado en el Departamento de Informática e Ingeniería de la Universidad Estatal de Nueva York en Buffalo. Sus intereses incluyen Arquitectura de Computadores, VLSI y electrónica molecular.

Copyright 1999 Nihar R. Mahapatra & Balakrishna Venkatrao

Last Modified:
Original location: www.acm.org/crossroads/espanol/xrds5-3/pmgap.html