Analyzing and Optimizing Cache-Friendliness Through Memory Access Patterns: Metrics, Tools, and Methodologies
Guardado en:
| Publicado en: | ProQuest Dissertations and Theses (2025) |
|---|---|
| Autor principal: | |
| Publicado: |
ProQuest Dissertations & Theses
|
| Materias: | |
| Acceso en línea: | Citation/Abstract Full Text - PDF |
| Etiquetas: |
Sin Etiquetas, Sea el primero en etiquetar este registro!
|
| Resumen: | Optimizing program performance requires a deep understanding of how software interacts with the memory subsystem, particularly cache memories. This work introduces a comprehensive methodology and a set of novel tools designed to measure and analyze the cache-friendliness of computer programs, with the ultimate goal of improving their efficiency.At the core of this research lies the concept of Memory Access Patterns (MAP), defined as sequences of memory operations performed by a program during execution. While such patterns can theoretically be recorded at various abstraction levels, the linear execution plane (representing the sequence of instructions post-compilation but pre-execution by hardware) proves most insightful.Instructions at this layer directly reflect algorithm design, code implementation, and compiler optimizations, thus serving as the final abstraction level accessible to direct programmer intervention.This research formally characterizes cache-friendly behavior through metrics such as Spatial Locality Degree (SLD), Temporal Locality Degree (TLD), Cache Miss Ratio (CMR), Cumulative Main Memory Access (CMMA), Cache Utilization Ratio (CUR), and Aliasing Density (AD). Each metric provides a unique perspective: locality degrees measure spatial and temporal memory access closeness; CMR quantifies efficiency through cache misses; CMMA tracks data movement between cache and main memory; CUR evaluates the extent of cache usage; and AD identifies problematic memory strides causing frequent cache conflicts (aliasing).Additionally, the concept of Memory Roundtrip Interval (MRI) is introduced, quantifying the time a memory block remains outside cache after eviction. Short roundtrip intervals are particularly costly in performance terms, indicating blocks evicted prematurely. To visualize and quantify these phenomena, the toolset employs graphical representations making cache behavior and potential optimization opportunities easily identifiable.To facilitate practical analyses, the research presents an instrumentation tool (libmaptracer) built atop Intel's dynamic binary instrumentation framework, Pin. This approach records precise memory operations at runtime with minimal overhead. The resulting MAP files, though potentially large, serve as inputs for a novel specialized analysis tool, mapanalyzer. This analyzer simulates cache behavior using customizable cache descriptions, enabling multiple cache scenarios to be evaluated from a single MAP file without rerunning the studied application.Mapanalyzer's modular architecture allows independent evaluation of each cache-friendliness metric and provides flexibility for future extensions with new analysis modules. Its design decouples the simulation from program execution, meaning performance analyses can be conducted offline for varying hardware configurations without direct hardware access, significantly streamlining the optimization process.Comprehensive experiments validate this methodology across multiple scenarios, including sequential accesses, matrix transpositions, random and structured accesses, and probabilistic Markov-chain traversals. These experiments highlight subtle interactions between software algorithms and cache hardware, demonstrating that carefully chosen data layouts and execution strategies can significantly improve cache efficiency.In conclusion, this work provides robust theoretical definitions of cache-friendliness, introduces practical tools to measure it precisely, and offers methodologies to visualize and analyze detailed cache behavior. This integrated approach equips programmers and researchers with powerful means to optimize software performance by effectively managing cache-memory interactions. Optimizar el rendimiento de los programas requiere una comprensión profunda de cómo el software interactúa con el subsistema de memoria, en particular con las memorias caché. Este trabajo introduce una metodología integral y un conjunto de herramientas novedosas diseñadas para medir y analizar la amigabilidad con la caché (cache-friendliness) de los programas, con el objetivo final de mejorar su eficiencia. En el núcleo de esta investigación se encuentra el concepto de Patrones de Acceso a Memoria (MAP, por sus siglas en inglés, Memory Access Patterns), definidos como las secuencias de operaciones de memoria realizadas por un programa durante su ejecución. Aunque estos patrones pueden registrarse teóricamente en distintos niveles de abstracción, el plano de ejecución lineal (que representa la secuencia de instrucciones una vez compiladas pero antes de ser ejecutadas por el hardware) resulta ser el más revelador. Las instrucciones en este nivel reflejan directamente el diseño del algoritmo, la implementación del código y las optimizaciones del compilador, constituyendo así el último nivel de abstracción accesible a la intervención directa del programador. Esta investigación caracteriza formalmente el comportamiento amigable con la caché mediante métricas como el Grado de Localidad Espacial (SLD, Spatial Locality Degree), el Grado de Localidad Temporal (TLD, Temporal Locality Degree), el Ratio de Fallos de Caché (CMR, Cache Miss Ratio), el Acceso Acumulativo a Memoria Principal (CMMA, Cumulative Main Memory Access), el Ratio de Utilización de la Caché (CUR, Cache Utilization Ratio), y la Densidad de Aliasing (AD, Aliasing Density). Cada métrica proporciona una perspectiva única: los grados de localidad miden la cercanía espacial y temporal de los accesos a memoria; el CMR cuantifica la eficiencia observando los fallos de caché; el CMMA rastrea el movimiento de datos entre la caché y la memoria principal; el CUR evalúa el grado de aprovechamiento de la caché; y el AD identifica patrones de acceso problemáticos que provocan conflictos frecuentes en la caché debido al aliasing (colisiones entre direcciones distintas que mapean a la misma línea de caché). Además, se introduce el concepto de Intervalo de Ida y Vuelta de Memoria (MRI, Memory Roundtrip Interval), que cuantifica el tiempo que un bloque de memoria permanece fuera de la caché después de haber sido expulsado (evicted). Intervalos cortos de ida y vuelta resultan especialmente costosos en términos de rendimiento, ya que indican bloques expulsados prematuramente. Para visualizar y cuantificar estos fenómenos, el conjunto de herramientas emplea representaciones gráficas que facilitan la identificación del comportamiento de la caché y de posibles oportunidades de optimización. Para facilitar los análisis prácticos, esta investigación presenta una herramienta de instrumentación (libmaptracer) construida sobre Pin, el marco de instrumentación binaria dinámica de Intel. Este enfoque permite registrar con precisión las operaciones de memoria en tiempo de ejecución con un costo mínimo en rendimiento. Los archivos MAP generados, aunque potencialmente grandes, sirven como entrada para una herramienta de análisis especializada llamada mapanalyzer. Este analizador simula el comportamiento de la caché utilizando descripciones personalizables de cachés, lo que permite evaluar múltiples escenarios de caché a partir de un solo archivo MAP, sin necesidad de volver a ejecutar la aplicación estudiada. La arquitectura modular de mapanalyzer permite evaluar de forma independiente cada métrica de cache-friendliness, y ofrece flexibilidad para futuras extensiones mediante nuevos módulos de análisis. Su diseño desacopla la simulación de la ejecución del programa, lo que permite realizar análisis de rendimiento de manera offline para distintas configuraciones de hardware sin necesidad de acceso directo al hardware, simplificando así significativamente el proceso de optimización. Experimentos exhaustivos validan esta metodología en múltiples escenarios, incluyendo accesos secuenciales, transposición de matrices, accesos aleatorios y estructurados, y recorridos probabilísticos de cadenas de Markov. Estos experimentos destacan interacciones sutiles entre algoritmos de software y hardware de caché, demostrando que una elección cuidadosa del mapeo de datos a memoria y de las estrategias de ejecución puede mejorar significativamente la eficiencia de la caché. En conclusión, este trabajo proporciona definiciones teóricas sólidas del concepto de cache-friendliness, introduce herramientas prácticas para medirlo con precisión, y ofrece metodologías para visualizar y analizar el comportamiento detallado de la caché. Este enfoque integrado entrega a programadores e investigadores medios potentes para optimizar el rendimiento del software mediante una gestión efectiva de las interacciones con la memoria caché. |
|---|---|
| ISBN: | 9798288800245 |
| Fuente: | ProQuest Dissertations & Theses Global |