Implementing a Bare-Metal Threading Library for SHMAC
MetadataVis full innførsel
For decades, Moore's Law has stood as a symbol of the continuedperformance increases achieved through technology scaling. While Moore'sobservation has remained true for far longer than Moore himselfpredicted, it now seems to be coming to an end. The move to multi-coreprocessors was motivated by thermal challenges, but is by no means afinal solution. Heterogeneous systems could potentially achieve fargreater energy efficiency than symmetric, multi-core architectures.SHMAC is an FPGA-based architecture that intends to serve as a platformfor exploring the inherent challenges of heterogeneous, single-ISAsystems.Since working with parallel applications on bare-metal platforms can bedifficult, a higher level of abstraction is often preferable. One suchabstraction that is familiar to most developers is the POSIX threadsAPI. This thesis covers the implementation of a bare-metal Pthreadslibrary that provides both threading and several other synchronizationprimitives, such as condition variables, mutexes and barriers. Theimplemented library is used to port several benchmarks from the PARSECsuite; the results from these are presented both to showcase the currentperformance of the platform and the capabilities of the Pthreads library.As a result of the need to verify the correctness and performance of theimplemented library, the need for another tool arose: a profiler. Sincenone currently existed for SHMAC, one had to be written from scratch. Afully functional and gprof-compatible profiler was developed.The features, implementation details and usage of this profiler isdescribed here as well.Two other contributions to the SHMAC project were made as well. Thesewere intended to simplify the task of setting up a working developmentenvironment and the day-to-day work with SHMAC, respectively. Both ofthese will be presented in this thesis.