Traducción de Fernando Berzal
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:
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]:
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.
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.
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).
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.
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.
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.
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.
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.
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.
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