Avances en el uso eficiente de sistemas multi-softcores en FPGAs

Autores
Claverino, Daniel Gonzalo
Año de publicación
2023
Idioma
español castellano
Tipo de recurso
tesis de grado
Estado
versión publicada
Colaborador/a o director/a de tesis
González Márquez, David Alejandro
Mocskos, Esteban Eduardo
Descripción
Desde hace a ̃nos, el avance tecnológico en la fabricación de circuitos integrados ha permitido implementar múltiples procesadores en una misma pastilla con una creciente cantidad de núcleos, memoria e, inclusive, contener unidades funcionales con distinto grado de especialización. Sin embargo, a la hora de resolver problemas específicos, los procesadores de propósito general pueden ser superados por aceleradores, que son sistemas especialmente diseñados. Los más comunes son los aceleradores de vídeo que permiten, por ejemplo, procesar imágenes o descomprimir un flujo (stream) de vídeo de forma muy eficiente. Las FPGAs (Field-Programmable Gate Array) surgen como plataformas que permiten implementar soluciones de hardware programable, es decir, hardware que puede ser modificado o rediseñado por el usuario sin necesidad de reemplazar el circuito integrado. Consisten en una grilla de celdas de distinta especialización que pueden conectarse de diversas formas, resultando en una plataforma con alta flexibilidad. Las FPGAs resultan un camino v ́alido para el diseño, prototipado y construcción de hardware y, en particular, aceleradores. Siempre dentro de sus limitaciones de recursos, permiten implementar hardware y se puede lograr un alto grado de paralelismo. Dado este nivel de flexibilidad, un componente que se implementa en FPGA recibe el nombre de softcore. Estos pueden ir desde una máquina de estados o un sumador, hasta procesadores multi-core con varios niveles de cache. El límite dependerá de la cantidad de celdas y las formas de conexión disponibles, que es fija para una FPGA dada. El presente trabajo busca avanzar en técnicas que permitan el uso eficiente de múltiples softcores dentro de una FPGA, proponiendo un framework que permitirá estudiar distintos sistemas de procesamiento. Haremos especial uso del MicroBlaze, uno de los softcores más utilizados, desarrollado por Xilinx y creado específicamente para su uso en FPGAs. Una de las principales limitaciones de los sistemas basados en softcores es el acceso a memoria. Partiendo de este punto y utilizando bloques RAM de FPGA (BRAM), se propone estudiar un conjunto de estrategias de uso de la memoria: usar el stack en BRAM, correr código del programa en BRAM, y correr código de funciones de sincronización en BRAM. Esto implica ejecutar programas cuyos accesos a memoria utilizan distintas memorias, cada una con características distintas (BRAM y Cache+DDR). Respecto a las tres formas de uso de BRAM propuestas, notamos que mover y correr código de funciones de sincronización en BRAM no genera mejoras significativas salvo en casos donde hay muchos llamados o varios procesadores en espera. Dependiendo del algoritmo y su implementación, usar el stack en BRAM puede ir desde tener poco efecto a tener un impacto significativo en el desempeño, por encima de mover las funciones de sincronización. Finalmente, mover y correr código del algoritmo en BRAM genera el mayor impacto positivo en el rendimiento. Este impacto puede verse reducido si hay partes del código de uso frecuente que no se han movido a BRAM y continúan en memoria principal. Tener control del hardware nos permite implementar soluciones que se ajusten al problema a resolver. Trabajar desde una capa de abstracción baja implica que los desarrolladores deben manejar detalles de muy bajo nivel, como los procesadores mismos, su interconexión, y la distribución de memoria utilizando distintos tipos de memoria.
For years, technological advances in the manufacture of integrated circuits have allowed the implementation of multiple processors on the same chip with an increasing number of cores, memory, and even functional units with different degrees of specialization. However, when it comes to solving specific problems, general-purpose processors can be outperformed by accelerators, which are specially designed-systems. The most common are video accelerators that allow, for example, to process images or decompress a video stream very efficiently. FPGAs (Field-Programmable Gate Array) are platforms allowing programmable hardware implementation. The user can modify or redesign this hardware while using the same chip. FPGAs are composed of a variety of specialized cells distributed on a grid. These cells can be connected in different ways, resulting in a highly flexible platform. FPGAs are a valid path for hardware design, prototyping, and implementation. It is possible to implement several hardware components within their fixed and limited resources. Their nature favors highly parallel components and efficient access to I/O external events. Accelerators are one such particular piece of hardware. Given this flexibility, a component implemented on an FPGA is called softcore. These can go from a state machine or an adder to a multi-core processor with multiple cache levels, but some restrictions still apply. The number of cells and available connections are fixed on an FPGA limiting what can be implemented. In this thesis, we aim to study efficient ways of running multiple softcores on an FPGA. We propose a framework that allows studying a wide range of processing systems, and we use it to implement one particular multi-core system. We use Xilinx’s MicroBlaze, one of the most widely used softcore and specifically created to be deployed on FPGAs. One limitation of softcore systems is memory access. Having this in mind, we use RAM Blocks (BRAM) to study different memory usage strategies: point the stack to BRAM, execute program code on BRAM, and execute synchronization code on BRAM. This implies running programs where memory accesses are done to different memory types, each with its characteristics (BRAM and Cache+DDR). Regarding the three proposed BRAM uses, we found moving and executing synchronization code on BRAM to yield no significant improvements except in heavy synchronization cases or where processors were competing too strongly with memory access. Depending on the algorithm and its implementation, stack on BRAM results ranged from no impact to a significant performance improvement, even over the prior case. Lastly, moving and executing program code on BRAM showed the most positive impact on the performance of the three strategies. The latter’s results were reduced when the program was not completely moved to BRAM and frequently executed code was still executed on other memory. Controlling the hardware lets us implement a specifically designed solution to a problem. Working on a low-abstraction layer implies developers need to handle low-level details, such as processors, the interconnection between them, and memory distribution using different memory types.
Fil: Claverino, Daniel Gonzalo. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina.
Materia
FPGA
SMP
BRAM
SOFTCORE
MICROBLAZE
MEMORIA
CACHE
STACK
SPIN- LOCK
PERFORMANCE
FPGA
SMP
BRAM
SOFTCORE
MICROBLAZE
MEMORY
CACHE
STACK
SPIN-LOCK
PERFORMANCE
Nivel de accesibilidad
acceso abierto
Condiciones de uso
https://creativecommons.org/licenses/by-nc-sa/2.5/ar
Repositorio
Biblioteca Digital (UBA-FCEN)
Institución
Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
OAI Identificador
seminario:seminario_nCOM000527_Claverino

id BDUBAFCEN_e7466abef9ee7ffbf79636c53f77a355
oai_identifier_str seminario:seminario_nCOM000527_Claverino
network_acronym_str BDUBAFCEN
repository_id_str 1896
network_name_str Biblioteca Digital (UBA-FCEN)
spelling Avances en el uso eficiente de sistemas multi-softcores en FPGAsClaverino, Daniel GonzaloFPGASMPBRAMSOFTCOREMICROBLAZEMEMORIACACHESTACKSPIN- LOCKPERFORMANCEFPGASMPBRAMSOFTCOREMICROBLAZEMEMORYCACHESTACKSPIN-LOCKPERFORMANCEDesde hace a ̃nos, el avance tecnológico en la fabricación de circuitos integrados ha permitido implementar múltiples procesadores en una misma pastilla con una creciente cantidad de núcleos, memoria e, inclusive, contener unidades funcionales con distinto grado de especialización. Sin embargo, a la hora de resolver problemas específicos, los procesadores de propósito general pueden ser superados por aceleradores, que son sistemas especialmente diseñados. Los más comunes son los aceleradores de vídeo que permiten, por ejemplo, procesar imágenes o descomprimir un flujo (stream) de vídeo de forma muy eficiente. Las FPGAs (Field-Programmable Gate Array) surgen como plataformas que permiten implementar soluciones de hardware programable, es decir, hardware que puede ser modificado o rediseñado por el usuario sin necesidad de reemplazar el circuito integrado. Consisten en una grilla de celdas de distinta especialización que pueden conectarse de diversas formas, resultando en una plataforma con alta flexibilidad. Las FPGAs resultan un camino v ́alido para el diseño, prototipado y construcción de hardware y, en particular, aceleradores. Siempre dentro de sus limitaciones de recursos, permiten implementar hardware y se puede lograr un alto grado de paralelismo. Dado este nivel de flexibilidad, un componente que se implementa en FPGA recibe el nombre de softcore. Estos pueden ir desde una máquina de estados o un sumador, hasta procesadores multi-core con varios niveles de cache. El límite dependerá de la cantidad de celdas y las formas de conexión disponibles, que es fija para una FPGA dada. El presente trabajo busca avanzar en técnicas que permitan el uso eficiente de múltiples softcores dentro de una FPGA, proponiendo un framework que permitirá estudiar distintos sistemas de procesamiento. Haremos especial uso del MicroBlaze, uno de los softcores más utilizados, desarrollado por Xilinx y creado específicamente para su uso en FPGAs. Una de las principales limitaciones de los sistemas basados en softcores es el acceso a memoria. Partiendo de este punto y utilizando bloques RAM de FPGA (BRAM), se propone estudiar un conjunto de estrategias de uso de la memoria: usar el stack en BRAM, correr código del programa en BRAM, y correr código de funciones de sincronización en BRAM. Esto implica ejecutar programas cuyos accesos a memoria utilizan distintas memorias, cada una con características distintas (BRAM y Cache+DDR). Respecto a las tres formas de uso de BRAM propuestas, notamos que mover y correr código de funciones de sincronización en BRAM no genera mejoras significativas salvo en casos donde hay muchos llamados o varios procesadores en espera. Dependiendo del algoritmo y su implementación, usar el stack en BRAM puede ir desde tener poco efecto a tener un impacto significativo en el desempeño, por encima de mover las funciones de sincronización. Finalmente, mover y correr código del algoritmo en BRAM genera el mayor impacto positivo en el rendimiento. Este impacto puede verse reducido si hay partes del código de uso frecuente que no se han movido a BRAM y continúan en memoria principal. Tener control del hardware nos permite implementar soluciones que se ajusten al problema a resolver. Trabajar desde una capa de abstracción baja implica que los desarrolladores deben manejar detalles de muy bajo nivel, como los procesadores mismos, su interconexión, y la distribución de memoria utilizando distintos tipos de memoria.For years, technological advances in the manufacture of integrated circuits have allowed the implementation of multiple processors on the same chip with an increasing number of cores, memory, and even functional units with different degrees of specialization. However, when it comes to solving specific problems, general-purpose processors can be outperformed by accelerators, which are specially designed-systems. The most common are video accelerators that allow, for example, to process images or decompress a video stream very efficiently. FPGAs (Field-Programmable Gate Array) are platforms allowing programmable hardware implementation. The user can modify or redesign this hardware while using the same chip. FPGAs are composed of a variety of specialized cells distributed on a grid. These cells can be connected in different ways, resulting in a highly flexible platform. FPGAs are a valid path for hardware design, prototyping, and implementation. It is possible to implement several hardware components within their fixed and limited resources. Their nature favors highly parallel components and efficient access to I/O external events. Accelerators are one such particular piece of hardware. Given this flexibility, a component implemented on an FPGA is called softcore. These can go from a state machine or an adder to a multi-core processor with multiple cache levels, but some restrictions still apply. The number of cells and available connections are fixed on an FPGA limiting what can be implemented. In this thesis, we aim to study efficient ways of running multiple softcores on an FPGA. We propose a framework that allows studying a wide range of processing systems, and we use it to implement one particular multi-core system. We use Xilinx’s MicroBlaze, one of the most widely used softcore and specifically created to be deployed on FPGAs. One limitation of softcore systems is memory access. Having this in mind, we use RAM Blocks (BRAM) to study different memory usage strategies: point the stack to BRAM, execute program code on BRAM, and execute synchronization code on BRAM. This implies running programs where memory accesses are done to different memory types, each with its characteristics (BRAM and Cache+DDR). Regarding the three proposed BRAM uses, we found moving and executing synchronization code on BRAM to yield no significant improvements except in heavy synchronization cases or where processors were competing too strongly with memory access. Depending on the algorithm and its implementation, stack on BRAM results ranged from no impact to a significant performance improvement, even over the prior case. Lastly, moving and executing program code on BRAM showed the most positive impact on the performance of the three strategies. The latter’s results were reduced when the program was not completely moved to BRAM and frequently executed code was still executed on other memory. Controlling the hardware lets us implement a specifically designed solution to a problem. Working on a low-abstraction layer implies developers need to handle low-level details, such as processors, the interconnection between them, and memory distribution using different memory types.Fil: Claverino, Daniel Gonzalo. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina.Universidad de Buenos Aires. Facultad de Ciencias Exactas y NaturalesGonzález Márquez, David AlejandroMocskos, Esteban Eduardo2023info:eu-repo/semantics/bachelorThesisinfo:eu-repo/semantics/publishedVersionhttp://purl.org/coar/resource_type/c_7a1finfo:ar-repo/semantics/tesisDeGradoapplication/pdfhttps://hdl.handle.net/20.500.12110/seminario_nCOM000527_Claverinospainfo:eu-repo/semantics/openAccesshttps://creativecommons.org/licenses/by-nc-sa/2.5/arreponame:Biblioteca Digital (UBA-FCEN)instname:Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturalesinstacron:UBA-FCEN2025-09-29T13:43:41Zseminario:seminario_nCOM000527_ClaverinoInstitucionalhttps://digital.bl.fcen.uba.ar/Universidad públicaNo correspondehttps://digital.bl.fcen.uba.ar/cgi-bin/oaiserver.cgiana@bl.fcen.uba.arArgentinaNo correspondeNo correspondeNo correspondeopendoar:18962025-09-29 13:43:42.184Biblioteca Digital (UBA-FCEN) - Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturalesfalse
dc.title.none.fl_str_mv Avances en el uso eficiente de sistemas multi-softcores en FPGAs
title Avances en el uso eficiente de sistemas multi-softcores en FPGAs
spellingShingle Avances en el uso eficiente de sistemas multi-softcores en FPGAs
Claverino, Daniel Gonzalo
FPGA
SMP
BRAM
SOFTCORE
MICROBLAZE
MEMORIA
CACHE
STACK
SPIN- LOCK
PERFORMANCE
FPGA
SMP
BRAM
SOFTCORE
MICROBLAZE
MEMORY
CACHE
STACK
SPIN-LOCK
PERFORMANCE
title_short Avances en el uso eficiente de sistemas multi-softcores en FPGAs
title_full Avances en el uso eficiente de sistemas multi-softcores en FPGAs
title_fullStr Avances en el uso eficiente de sistemas multi-softcores en FPGAs
title_full_unstemmed Avances en el uso eficiente de sistemas multi-softcores en FPGAs
title_sort Avances en el uso eficiente de sistemas multi-softcores en FPGAs
dc.creator.none.fl_str_mv Claverino, Daniel Gonzalo
author Claverino, Daniel Gonzalo
author_facet Claverino, Daniel Gonzalo
author_role author
dc.contributor.none.fl_str_mv González Márquez, David Alejandro
Mocskos, Esteban Eduardo
dc.subject.none.fl_str_mv FPGA
SMP
BRAM
SOFTCORE
MICROBLAZE
MEMORIA
CACHE
STACK
SPIN- LOCK
PERFORMANCE
FPGA
SMP
BRAM
SOFTCORE
MICROBLAZE
MEMORY
CACHE
STACK
SPIN-LOCK
PERFORMANCE
topic FPGA
SMP
BRAM
SOFTCORE
MICROBLAZE
MEMORIA
CACHE
STACK
SPIN- LOCK
PERFORMANCE
FPGA
SMP
BRAM
SOFTCORE
MICROBLAZE
MEMORY
CACHE
STACK
SPIN-LOCK
PERFORMANCE
dc.description.none.fl_txt_mv Desde hace a ̃nos, el avance tecnológico en la fabricación de circuitos integrados ha permitido implementar múltiples procesadores en una misma pastilla con una creciente cantidad de núcleos, memoria e, inclusive, contener unidades funcionales con distinto grado de especialización. Sin embargo, a la hora de resolver problemas específicos, los procesadores de propósito general pueden ser superados por aceleradores, que son sistemas especialmente diseñados. Los más comunes son los aceleradores de vídeo que permiten, por ejemplo, procesar imágenes o descomprimir un flujo (stream) de vídeo de forma muy eficiente. Las FPGAs (Field-Programmable Gate Array) surgen como plataformas que permiten implementar soluciones de hardware programable, es decir, hardware que puede ser modificado o rediseñado por el usuario sin necesidad de reemplazar el circuito integrado. Consisten en una grilla de celdas de distinta especialización que pueden conectarse de diversas formas, resultando en una plataforma con alta flexibilidad. Las FPGAs resultan un camino v ́alido para el diseño, prototipado y construcción de hardware y, en particular, aceleradores. Siempre dentro de sus limitaciones de recursos, permiten implementar hardware y se puede lograr un alto grado de paralelismo. Dado este nivel de flexibilidad, un componente que se implementa en FPGA recibe el nombre de softcore. Estos pueden ir desde una máquina de estados o un sumador, hasta procesadores multi-core con varios niveles de cache. El límite dependerá de la cantidad de celdas y las formas de conexión disponibles, que es fija para una FPGA dada. El presente trabajo busca avanzar en técnicas que permitan el uso eficiente de múltiples softcores dentro de una FPGA, proponiendo un framework que permitirá estudiar distintos sistemas de procesamiento. Haremos especial uso del MicroBlaze, uno de los softcores más utilizados, desarrollado por Xilinx y creado específicamente para su uso en FPGAs. Una de las principales limitaciones de los sistemas basados en softcores es el acceso a memoria. Partiendo de este punto y utilizando bloques RAM de FPGA (BRAM), se propone estudiar un conjunto de estrategias de uso de la memoria: usar el stack en BRAM, correr código del programa en BRAM, y correr código de funciones de sincronización en BRAM. Esto implica ejecutar programas cuyos accesos a memoria utilizan distintas memorias, cada una con características distintas (BRAM y Cache+DDR). Respecto a las tres formas de uso de BRAM propuestas, notamos que mover y correr código de funciones de sincronización en BRAM no genera mejoras significativas salvo en casos donde hay muchos llamados o varios procesadores en espera. Dependiendo del algoritmo y su implementación, usar el stack en BRAM puede ir desde tener poco efecto a tener un impacto significativo en el desempeño, por encima de mover las funciones de sincronización. Finalmente, mover y correr código del algoritmo en BRAM genera el mayor impacto positivo en el rendimiento. Este impacto puede verse reducido si hay partes del código de uso frecuente que no se han movido a BRAM y continúan en memoria principal. Tener control del hardware nos permite implementar soluciones que se ajusten al problema a resolver. Trabajar desde una capa de abstracción baja implica que los desarrolladores deben manejar detalles de muy bajo nivel, como los procesadores mismos, su interconexión, y la distribución de memoria utilizando distintos tipos de memoria.
For years, technological advances in the manufacture of integrated circuits have allowed the implementation of multiple processors on the same chip with an increasing number of cores, memory, and even functional units with different degrees of specialization. However, when it comes to solving specific problems, general-purpose processors can be outperformed by accelerators, which are specially designed-systems. The most common are video accelerators that allow, for example, to process images or decompress a video stream very efficiently. FPGAs (Field-Programmable Gate Array) are platforms allowing programmable hardware implementation. The user can modify or redesign this hardware while using the same chip. FPGAs are composed of a variety of specialized cells distributed on a grid. These cells can be connected in different ways, resulting in a highly flexible platform. FPGAs are a valid path for hardware design, prototyping, and implementation. It is possible to implement several hardware components within their fixed and limited resources. Their nature favors highly parallel components and efficient access to I/O external events. Accelerators are one such particular piece of hardware. Given this flexibility, a component implemented on an FPGA is called softcore. These can go from a state machine or an adder to a multi-core processor with multiple cache levels, but some restrictions still apply. The number of cells and available connections are fixed on an FPGA limiting what can be implemented. In this thesis, we aim to study efficient ways of running multiple softcores on an FPGA. We propose a framework that allows studying a wide range of processing systems, and we use it to implement one particular multi-core system. We use Xilinx’s MicroBlaze, one of the most widely used softcore and specifically created to be deployed on FPGAs. One limitation of softcore systems is memory access. Having this in mind, we use RAM Blocks (BRAM) to study different memory usage strategies: point the stack to BRAM, execute program code on BRAM, and execute synchronization code on BRAM. This implies running programs where memory accesses are done to different memory types, each with its characteristics (BRAM and Cache+DDR). Regarding the three proposed BRAM uses, we found moving and executing synchronization code on BRAM to yield no significant improvements except in heavy synchronization cases or where processors were competing too strongly with memory access. Depending on the algorithm and its implementation, stack on BRAM results ranged from no impact to a significant performance improvement, even over the prior case. Lastly, moving and executing program code on BRAM showed the most positive impact on the performance of the three strategies. The latter’s results were reduced when the program was not completely moved to BRAM and frequently executed code was still executed on other memory. Controlling the hardware lets us implement a specifically designed solution to a problem. Working on a low-abstraction layer implies developers need to handle low-level details, such as processors, the interconnection between them, and memory distribution using different memory types.
Fil: Claverino, Daniel Gonzalo. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina.
description Desde hace a ̃nos, el avance tecnológico en la fabricación de circuitos integrados ha permitido implementar múltiples procesadores en una misma pastilla con una creciente cantidad de núcleos, memoria e, inclusive, contener unidades funcionales con distinto grado de especialización. Sin embargo, a la hora de resolver problemas específicos, los procesadores de propósito general pueden ser superados por aceleradores, que son sistemas especialmente diseñados. Los más comunes son los aceleradores de vídeo que permiten, por ejemplo, procesar imágenes o descomprimir un flujo (stream) de vídeo de forma muy eficiente. Las FPGAs (Field-Programmable Gate Array) surgen como plataformas que permiten implementar soluciones de hardware programable, es decir, hardware que puede ser modificado o rediseñado por el usuario sin necesidad de reemplazar el circuito integrado. Consisten en una grilla de celdas de distinta especialización que pueden conectarse de diversas formas, resultando en una plataforma con alta flexibilidad. Las FPGAs resultan un camino v ́alido para el diseño, prototipado y construcción de hardware y, en particular, aceleradores. Siempre dentro de sus limitaciones de recursos, permiten implementar hardware y se puede lograr un alto grado de paralelismo. Dado este nivel de flexibilidad, un componente que se implementa en FPGA recibe el nombre de softcore. Estos pueden ir desde una máquina de estados o un sumador, hasta procesadores multi-core con varios niveles de cache. El límite dependerá de la cantidad de celdas y las formas de conexión disponibles, que es fija para una FPGA dada. El presente trabajo busca avanzar en técnicas que permitan el uso eficiente de múltiples softcores dentro de una FPGA, proponiendo un framework que permitirá estudiar distintos sistemas de procesamiento. Haremos especial uso del MicroBlaze, uno de los softcores más utilizados, desarrollado por Xilinx y creado específicamente para su uso en FPGAs. Una de las principales limitaciones de los sistemas basados en softcores es el acceso a memoria. Partiendo de este punto y utilizando bloques RAM de FPGA (BRAM), se propone estudiar un conjunto de estrategias de uso de la memoria: usar el stack en BRAM, correr código del programa en BRAM, y correr código de funciones de sincronización en BRAM. Esto implica ejecutar programas cuyos accesos a memoria utilizan distintas memorias, cada una con características distintas (BRAM y Cache+DDR). Respecto a las tres formas de uso de BRAM propuestas, notamos que mover y correr código de funciones de sincronización en BRAM no genera mejoras significativas salvo en casos donde hay muchos llamados o varios procesadores en espera. Dependiendo del algoritmo y su implementación, usar el stack en BRAM puede ir desde tener poco efecto a tener un impacto significativo en el desempeño, por encima de mover las funciones de sincronización. Finalmente, mover y correr código del algoritmo en BRAM genera el mayor impacto positivo en el rendimiento. Este impacto puede verse reducido si hay partes del código de uso frecuente que no se han movido a BRAM y continúan en memoria principal. Tener control del hardware nos permite implementar soluciones que se ajusten al problema a resolver. Trabajar desde una capa de abstracción baja implica que los desarrolladores deben manejar detalles de muy bajo nivel, como los procesadores mismos, su interconexión, y la distribución de memoria utilizando distintos tipos de memoria.
publishDate 2023
dc.date.none.fl_str_mv 2023
dc.type.none.fl_str_mv info:eu-repo/semantics/bachelorThesis
info:eu-repo/semantics/publishedVersion
http://purl.org/coar/resource_type/c_7a1f
info:ar-repo/semantics/tesisDeGrado
format bachelorThesis
status_str publishedVersion
dc.identifier.none.fl_str_mv https://hdl.handle.net/20.500.12110/seminario_nCOM000527_Claverino
url https://hdl.handle.net/20.500.12110/seminario_nCOM000527_Claverino
dc.language.none.fl_str_mv spa
language spa
dc.rights.none.fl_str_mv info:eu-repo/semantics/openAccess
https://creativecommons.org/licenses/by-nc-sa/2.5/ar
eu_rights_str_mv openAccess
rights_invalid_str_mv https://creativecommons.org/licenses/by-nc-sa/2.5/ar
dc.format.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales
publisher.none.fl_str_mv Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales
dc.source.none.fl_str_mv reponame:Biblioteca Digital (UBA-FCEN)
instname:Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
instacron:UBA-FCEN
reponame_str Biblioteca Digital (UBA-FCEN)
collection Biblioteca Digital (UBA-FCEN)
instname_str Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
instacron_str UBA-FCEN
institution UBA-FCEN
repository.name.fl_str_mv Biblioteca Digital (UBA-FCEN) - Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
repository.mail.fl_str_mv ana@bl.fcen.uba.ar
_version_ 1844618758250823680
score 13.070432