Desarrollo de técnicas de procesamiento paralelo a nivel de lenguaje assembler para el procesador RISC-V
Professor Advisor
dc.contributor.advisor
Rivera Serrano, Francisco
Author
dc.contributor.author
Giralt Álvarez, José Manuel
Associate professor
dc.contributor.other
Azurdia Meza, César
Associate professor
dc.contributor.other
Palacios Jativa, Pablo
Admission date
dc.date.accessioned
2021-08-05T20:23:09Z
Available date
dc.date.available
2021-08-05T20:23:09Z
Publication date
dc.date.issued
2021
Identifier
dc.identifier.uri
https://repositorio.uchile.cl/handle/2250/181127
General note
dc.description
Memoria para optar al título de Ingeniero Civil Eléctrico
es_ES
Abstract
dc.description.abstract
El siguiente trabajo muestra la paralelización del algoritmo de ordenamiento insertion sort
de forma que pueda funcionar utilizando múltiples procesadores RISC-V, con tal de reducir
el tiempo de ejecución necesario para su funcionamiento.
Las experiencias realizadas en este trabajo fueron divididas en dos partes, la primera consistiendo
en la implementación del paralelismo propiamente tal utilizando la API OpenMP
y la modificación del programa básico en C original según sea necesario. Mientras que la
segunda consistió en reemplazar secciones claves del programa resultante de la experiencia
anterior por código assembler equivalente. Durante ambas experiencias se utilizó el tiempo de
ejecución, medido desde que inicia el proceso de ordenamiento hasta el fin de dicho proceso,
como parámetro de estudio.
La implementación de las experiencias se realizó utilizando el simulador gem5, que permite
simular sistemas con distintos niveles de complejidad y detalle, mientras que su aspecto más
importante es su precisión a nivel de ciclo, lo que permite utilizarlo para medir los tiempos
de ejecución de manera realista y consistente.
Los resultados obtenidos indicaron que es posible generar un programa que, mediante el
paralelismo entre múltiples procesadores, logre reducir el tiempo de ejecución necesario para
ordenar un arreglo aleatorio, el que además fuese escalable, significando que el programa es
capaz de trabajar con una cantidad creciente de procesadores y reducir el tiempo de ejecución
acordemente. Mientras que de la segunda experiencia se desprendió que si bien el lenguaje
assembler logró reducir el tiempo de ejecución considerablemente, el cambio por si solo no
fue mas eficiente que utilizar las opciones del compilador para optimizar el programa.