Por favor, use este identificador para citar o enlazar este ítem: http://hdl.handle.net/10201/146865

Título: Microarchitectural Optimizations for an Efficient Utilization of Processor Resources
Otros títulos: Optimizaciones microarquitecturales para un uso eficiente de los recursos del procesador
Fecha de publicación: 25-nov-2024
Fecha de defensa / creación: 21-nov-2024
Editorial: Universidad de Murcia
Materias relacionadas: CDU::0 - Generalidades.::00 - Ciencia y conocimiento. Investigación. Cultura. Humanidades.::004 - Ciencia y tecnología de los ordenadores. Informática.::004.2 - Arquitectura informática
Palabras clave: Arquitectura de ordenador
Resumen: Con el tiempo, la complejidad del hardware en los computadores ha aumentado constantemente, siempre en pos de ofrecer un mayor rendimiento. Varios son los mecanismos introducidos con este objetivo, por ejemplo, aumentar el número de etapas del cauce, la ejecución fuera de orden (OoO, por sus siglas en inglés) u optimizaciones en la jerarquía de memoria. El fin común de los mencionados mecanismos es el de ocultar la latencia de acceso a la información almacenada en memoria, tanto referente a instrucciones como a datos. Como resultado se consigue que el procesador siempre esté realizando trabajo útil y por tanto ofrezca un mayor rendimiento. La ejecución fuera de orden (OoO) destaca entre el resto de mecanismos. Esta principalmente se centra en ejecutar las instrucciones en el cauce del procesador de forma no secuencial. En el momento en el que los operandos de una instrucción que se ha introducido al camino de datos están disponibles estas se ejecutan si existe una unidad funcional disponible para ello. De esta forma, las instrucciones se pueden ejecutar en un orden diferente al especificado por el programa. Sin embargo, estas sí deben cambiar el estado arquitectural del procesador en el mismo orden en el que se emitieron. Con este objetivo y para garantizar la corrección, se requiere hacer un registro exhaustivo de las instrucciones “en vuelo” o ya emitidas. Dentro del procesador podemos encontrar varias estructuras que permiten este seguimiento, como son el Reorder Buffer (ROB), Load Queue (LQ), Store Queue (SQ) y Store Buffer (SB). Para cada instrucción se requiere una entrada en el ROB, mientras que las lecturas y los almacenamientos de datos también requieren entradas en la LQ y SQ respectivamente. Estas dos últimas estructuras se utilizan para forzar el mantenimiento del orden de los accesos a memoria tal y como fueron emitidos. Por ello, ambas estructuras admiten búsquedas asociativas. Si cualquiera de estas estructuras llegase a llenarse, el procesador no podría continuar emitiendo instrucciones e irremediablemente debe producirse una parada. Es importante optimizar el tamaño de estas en su diseño para mantener un compromiso entre tamaño y tiempo de acceso. Si las estructuras son demasiado pequeñas, se producirán más paradas, mientras que aumentar su tamaño también aumenta su complejidad a la hora de implementarlas, resultando en búsquedas más lentas y por tanto en una degradación de rendimiento. Para poder utilizar el mecanismo de ejecución fuera de orden de una forma eficiente, el front-end del procesador, adicionalmente, debe ser capaz de proporcionar las suficientes instrucciones al cauce. Por lo general, las instrucciones pueden obtenerse ya sea de la caché de micro-operaciones (μ-op) o desde el nivel más bajo de la caché de instrucciones (L1I). La caché de micro-operaciones inicialmente fue diseñada como un mecanismo útil para reducir la energía disipada por el procesador. Adicionalmente ha demostrado ser beneficiosa para mejorar el rendimiento al reducir el tiempo que tarda el procesador en recuperarse ante un salto mal predicho. Sin embargo, esta caché no siempre puede proporcionar las suficientes instrucciones, siendo un potencial cuello de botella para el rendimiento, particularmente en aplicaciones en las que el rango de direcciones de memoria que se usa para almacenar las instrucciones es lo suficientemente grande. Un ejemplo claro de este tipo de aplicaciones son las cargas de trabajo de servidores y centros de datos, muy comunes a día de hoy en grandes empresas. Esta mejora se traduce en mejoras significativas del rendimiento general y la eficiencia del sistema que se ubican en el rango del 2% al 8%.
Over time, computer architects have introduced various mechanisms to enhance processor performance, such as deeper pipelines, out-of-order (OoO) execution, and improvements in memory hierarchy. These techniques aim to reduce latency in instruction execution and memory access, ensuring that the processor remains active rather than idle. Among these, OoO execution is particularly significant, as it allows instructions to execute as soon as their operands are ready, rather than following a strict sequential order. This speculative execution boosts performance but requires complex mechanisms to maintain program correctness. OoO execution depends on several key structures: the reorder buffer (ROB), load queue (LQ), store queue (SQ), and store buffer (SB). These components ensure that the processor can track and manage the correct order of instruction execution and memory operations. The ROB holds entries for every instruction, while the LQ and SQ manage memory order, handling load and store operations, respectively. Both the LQ and SQ require associative searches to maintain the correct memory order. However, when these structures fill up, the processor stalls, leading to performance degradation. If the structures are too small, they become bottlenecks, but if they are too large, performance slows down due to inefficient searches. Efficient utilization of these structures depends on the processor's ability to continuously fetch and decode useful instructions. This is where the L1 instruction cache and the micro-op cache come into play. Originally designed to save power, the micro-op cache has also been found to enhance performance by reducing the latency involved in fetching and decoding instructions. However, when the micro-op cache fails to provide useful instructions, frontend stalls occur, further hindering performance. This is particularly problematic in workloads with large instruction footprints, such as those commonly found in servers and data centers. This thesis focuses on improving the utilization of key processor structures, including the ROB, LQ, SB, and micro-op cache, to reduce instruction latency and ensure the processor operates efficiently. We use latest simulators and benchmarks to test our proposals. The research makes four key contributions: 1. Regional Out-of-Order Writes in Total Store Order (ROOW): This technique enables safe out-of-order writes within data-race-free regions, reducing processor stalls by 7.11% and improving execution time by 8.13%. 2. Compiler-Assisted Efficient Load-Load Ordering (CELLO): CELLO is designed to reduce unnecessary searches in the LQ by filtering out around 47% of LQ searches. This optimization improves execution time by 2.8% and reduces LQ energy consumption by 33%. 3. Instruction Fusion Mechanism (Helios): Helios focuses on fusing non-consecutive instructions, improving the utilization of processor structures like the ROB, LQ, and SQ. This reduces stalls and leads to a performance gain of 8.2%. 4. micro-op Cache Prefetching (UCP): UCP addresses frontend stalls in server workloads with large instruction footprints by prefetching micro-ops on alternate paths for hard-to-predict branches, delivering a 2% improvement in performance. Through these contributions, the thesis demonstrates notable performance improvements, ranging from 2% to 8%, by reducing processor stalls caused by inefficient utilization of internal structures and frontend inefficiencies. This work shows how addressing bottlenecks in both the backend (ROB, LQ, SB) and the frontend (micro-op cache) can significantly boost overall processor efficiency and execution performance.
Autor/es principal/es: Singh, Sawan
Director/es: Ros Bardisa, Alberto
Jimborean, Alexandra
Facultad/Servicios: Escuela Internacional de Doctorado
Forma parte de: Proyecto de investigación:
URI: http://hdl.handle.net/10201/146865
Tipo de documento: info:eu-repo/semantics/doctoralThesis
Número páginas / Extensión: 178
Derechos: info:eu-repo/semantics/openAccess
Attribution-NonCommercial-NoDerivatives 4.0 Internacional
Aparece en las colecciones:Ingeniería

Ficheros en este ítem:
Fichero Descripción TamañoFormato 
Y7090710P_sin_papers.pdf3,12 MBAdobe PDFVista previa
Visualizar/Abrir
Sawan_Singh_Y7090710P_thesis.pdf6,19 MBAdobe PDFVista previa
Visualizar/Abrir    Solicitar una copia


Este ítem está sujeto a una licencia Creative Commons Licencia Creative Commons Creative Commons