Hardware support for fine-grained parallelism and simultaneous multithreading in RISC-V

View/Open
Cita com:
hdl:2117/394542
CovenanteeMassachusetts Institute of Technology
Document typeBachelor thesis
Date2023-05-24
Rights accessOpen Access
This work is protected by the corresponding intellectual and industrial property rights.
Except where otherwise noted, its contents are licensed under a Creative Commons license
:
Attribution-NonCommercial-NoDerivs 4.0 International
Abstract
El processadors moderns han d’explotar tots els nivells de paral·lelisme disponibles per a aconseguir el màxim rendiment i ús dels recursos hardware. Aquest projecte es centra en les arquitectures multifil, que executen múltiples fils de codi simultàniament per a saturar recursos hardware compartits. Les arquitectures multifil, però, requereixen de forma natural d’una alta quantitat de paral·lelisme per a executar eficientment. Utilitzarem el model d’execució P-RISC per a extreure paral·lelisme del codi i saturar els recursos d'execució hardware. El model P-RISC afegeix instruccions pròpies i el suport hardware necessaris per a permetre la creació i sincronització de tasques paral·leles amb un overhead molt baix. En aquest projecte, dissenyem i implementem un nucli multifil RISC-V capaç d’executar el model i les instruccions afegides per P-RISC. Implementem un sistema de memòria amb accés en dues fases i l'estenem amb un sistema de cache que redueix el nombre d’accessos en dues fases. Implementem un àrbitre que maximitza el nombre d’instruccions vàlides enviades a les unitats d’execució mitjançant una política de prioritat basada en el nivell d’especulació. La nostra implementació es pot escalar fins a executar 12 fils fer nucli, ha sigut provada en simulació i FPGA, i es pot sintetitzar a 1.1GHz amb tecnologia GlobalFoundries de 22nm. Aconseguim increments en rendiment de 1.4x fins a 10x en comparació a l’equivalent seqüencial en FPGA. Los procesadores modernos deben explotar todos los niveles de paralelismo disponibles para conseguir el máximo rendimiento i uso de los recursos hardware. Es proyecto se centra en las arquitecturas multihilo, que ejecutan múltiplos hilos de código simultáneamente para saturar los recursos hardware compartidos. Las arquitecturas multihilo, sin embargo, necesitan de maneral natural de una alta cantidad de paralelismo para ejecutar eficientemente. Utilizaremos el modelo de ejecución P-RISC para extraer paralelismo del código i saturar los recursos de ejecución hardware. El modelo P-RISC añade instrucciones propias y el soporte hardware necesarios para permitir la creación y sincronización de tareas paralelas con un overhead muy bajo. En este proyecto, diseñamos e implementamos un núcleo multihilo RISC-V capaz de ejecutar el modelo y las instrucciones añadidas por P-RISC. Implementamos un sistema de memoria con acceso en dos fases y lo extendemos para añadir un sistema de cache que reduce el número de accesos en dos fases. Implementamos un árbitro que maximiza el número de instrucciones válidas que se envían a las unidades de ejecución mediante una política de prioridad basada en el nivel de especulación. Nuestra implementación se puede escalar hasta ejecutar 12 hilos por núcleo, ha sido provada en simulación y FPGA, y puede ser sintetizada a 1.1GHz con tecnologia GlobalFoundries de 22nm. Conseguimos incrementos en el rendimiento de 1.4x hasta 10x con respecto al equivalente secuencial en FPGA. Modern processors must exploit all available levels of parallelism in order to achieve maximum performance and hardware resource usage. This work focuses on multithreaded architectures, which exploit thread-level parallelism by hosting multiple instruction streams in a single core with shared resources. Multi-threaded architectures, however, inherently require plenty of thread-level parallelism to execute efficiently. We propose using the P-RISC execution model in order to extract parallelism from the code and saturate the hardware resources. The P-RISC execution model adds custom instructions and hardware support that allow the creation and synchronization of parallel tasks with very small overhead. In this work, we design and implement a multithreaded RISC-V core capable of executing the P-RISC model and added instructions. We implement a split-phase memory system and extend it to accommodate a caching system that reduces the number of actual split-phase accesses. We implement a custom arbiter module with a speculation-level-based priority policy that maximizes the valid instructions scheduled into the execution units. Our implementation can scale up to hosting 12 threads per core, has been tested in both simulation and on FPGA, and can be synthesized at 1.1GHz using GlobalFoundries 22nm technology. It achieves 1.4x to 10x speedups with respect to the sequential equivalent on FPGA.
DegreeGRAU EN ENGINYERIA INFORMÀTICA/GRAU EN MATEMÀTIQUES