[en] In the last 15 years, power dissipation and energy consumption have become crucial design concerns for almost all computer systems. Technology feature size scaling leads to higher power density and therefore to complex and costly cooling. While power dissipation is critical for high-performance systems such as data centers due to large power usage, for mobile systems battery life is a primary concern. In the low-end mobile processor market, power, energy and area budgets are significantly lower than in the server/desktop/laptop/high-end mobile markets. The ultimate goal in low-end systems is also to increase performance, but only if area/energy budget is not compromised. Vector architectures have been traditionally applied to the supercomputing domain with many successful incarnations. The energy efficiency and high performance of vector processors, as well as their applicability in other emerging domains, encourage pursuing further research on vector architectures. However adding support for them using conventional design incurs area and power overheads that would not be acceptable for low-end mobile processors and also there is a lack of appropriate tools to perform this research. In this thesis, we propose an integrated vector-scalar design for the low-power ARM architecture that mostly reuses scalar hardware to support the execution of vector instructions. The key element of the design is our proposed block-based model of execution that groups vector computational instructions together to execute them in a coordinated manner. We complement this with an advanced integrated design which features three energy-performance efficient ideas: (1) chaining from the memory hierarchy, (2) direct result forwarding and (3) memory shape instructions. This thesis also presents two tools for measuring and analyzing an application suitability for vector microarchitectures. The first tool is VALib, a library that enables hand-crafted vectorization of applications and its main purpose is to collect data for detailed instruction level characterization and to generate input traces for the second tool. The second tool is SimpleVector, a fast trace-driven simulator that is used to estimate the execution time of a vectorized application on a candidate vector microarchitecture. The thesis also evaluates characteristics of Knights Corner processor with simple in-order SIMD cores. Acquired knowledge is applied in the integrated design.

[es] En los últimos 15 años, la potencia disipada y el consumo de energía se han convertido en elementos cruciales del diseño de la práctica totalidad de sistemas de computación. El escalado del tamaño de los transistores conlleva densidades de potencia más altas y, en consecuencia, sistemas de refrigeración más complejos y costosos. Mientras que la potencia disipada es crítica para sistemas de alto rendimiento, como por ejemplo centros de datos, debido a su uso de gran potencia, para sistemas móviles la duración de la batería es la preocupación principal. Para el mercado de procesadores móviles de prestaciones más modestas, los límites permitidos para la potencia, energía y área del chip son significativamente más bajas que para los servidores, ordenadores de sobremesa, portátiles o móviles de gama alta. El objetivo final en sistemas de gama baja es igualmente el de incrementar el rendimiento, pero sólo si el "presupuesto" para energía o área no se ve comprometido. Tradicionalmente, las arquitecturas vectoriales han sido usadas en el ámbito de la supercomputación, con diversas implementaciones exitosas. La eficiencia energética y el alto rendimiento de los procesadores vectoriales, así como que se puedan aplicar a ámbitos emergentes, motivan a continuar la investigación en arquitecturas vectoriales. No obstante, añadir soporte paravectores basado en diseños convencionales conlleva incrementos de potencia y área que no son aceptables para procesadores móviles de gama baja. Además, no existen herramientas apropiadas para realizar esta investigación. En esta tesis, proponemos un diseño integrado vectorial-escalar para arquitecturas ARM de bajo consumo, que principalmente reutiliza el hardware escalar ya presente en el procesador para implementar el soporte de ejecución de instrucciones vectoriales. El elemento clave del diseño es nuestro modelo de ejecución por bloques propuesto en la tesis, que agrupa instrucciones de cómputo vectorial para ejecutarlas de manera coordinada. Complementamos esto con un diseño integrado avanzado que implementa tres ideas para incrementar el rendimiento eficientemente en cuanto a la energía consumida: (1) encadenamiento (chaining) desde la jerarquía de memoria, (2) reenvío (forwarding) directo de los resultados, y (3) instrucciones de memoria "shape", con patrones de acceso complejos. Además, esta tesis presenta dos herramientas para medir y analizar lo apropiado de usar microarquitecturas vectoriales para una aplicación. La primera herramienta es VALib, una biblioteca que permite la vectorización manual de aplicaciones, cuyo propósito principal es el de recolectar datos para una caracterización detallada a nivel de instrucción, así como el de generar trazas para la segunda herramienta, SimpleVector. SimpleVector es un simulador rápido basado en trazas que estima el tiempo de ejecución de una aplicación vectorial en la microarquitectura vectorial candidata. Finalmente, la tesis también evalúa las características del procesador Knight's Corner, con unidades SIMD en orden sencillas. Lo aprendido en estos análisis se ha aplicado en el diseño integrado.