Task-Level Pipelining in Configurable Multicore Architectures Ali Azarian Supervisor: João Manuel Paiva Cardoso Doctoral Program in Informatics Engineering January, 2016 © Ali Azarian: January, 2016 Faculty of Engineering, University of Porto (FEUP) Task-Level Pipelining in Configurable Multicore Architectures Ali Azarian Dissertation submitted to Faculdade de Engenharia da Universidade do Porto to obtain the degree of Doctor of Philosophy (Ph.D.) in Informatics Engineering President: Prof. Dr. Eugénio da Costa Oliveira, University of Porto Referee: Dr. José Gabriel de Figueiredo Coutinho, Imperial College London Referee: Prof. Dr. João Luís Ferreira Sobral, University of Minho Referee: Prof. Dr. Jorge Manuel Gomes Barbosa, University of Porto January, 2016 This thesis is dedicated to: Nasrin, Amir hossein and my parents Abstract Techniques to speedup and accelerate the execution of sequential applications con- sidering the multicore synergies provided by contemporary architectures, such as the ones possible to implement using Field-Programmable Gate Arrays (FPGAs), are increasingly important. One of the techniques is task-level pipelining, seen as a suitable technique for multicore based systems, especially when dealing with appli- cations consisting of producer/consumer (P/C) tasks. In order to provide task-level pipelining, efficient data communication and synchronization schemes between pro- ducers and consumers are key. The traditional mechanisms to provide data commu- nication and synchronization between P/C pairs, such as FIFO-channels and shared memory based empty/full flag schemes, may not be feasible and/or efficient for all types of applications. This thesis proposes an approach for pipelining tasks able to deal with in-order and out-of-order communication patterns between P/C pairs. In order to provide efficient communication and synchronization between producer/consumer tasks, we proposefine- andcoarse-graineddatasynchronizationapproachestoachievepipelin- ing execution in FPGA-based multicore architectures. Our approach is able to speedup the overall execution of successive, data-dependent tasks, by using multiple cores and specific customization features provided by FPGAs. An important com- ponent of our approach is the use of inter-stage buffer schemes to communicate data and to synchronize the cores associated with the producer/consumer tasks. Recog- nizing the importance to reduce the number of accesses to shared and/or external memories, weproposeoptimizationtechniquesforourfine-graineddatasynchroniza- tion approach, specially addressing the reduction of memory accesses. We evaluate our approaches with a set of representative benchmarks using an FPGA board and measurements on real hardware. The experimental results show the feasibility of our approaches in both in-order and out-of-order producer/consumer tasks. Moreover, the results using our approach reveal noticeable performance improvements for a number of benchmarks over a single core implementation without using task-level pipelining. Keywords: Multicore architectures. Task-level pipelining. FPGA. Producer/- Consumer data communication. iii Resumo Técnicas que permitam acelerar a execução de aplicações sequenciais têm assum- ido uma importância cada vez maior no contexto de arquiteturas multinúcleo, in- cluindo as implementadas utilizando Field-Programmable Gate Arrays (FPGAs) . Uma dessas técnicas é a execução em pipelining a nível de tarefas, a qual permite lidar com aplicações que contêm tarefas do tipo produtor/consumidor (P/C). Para utilizaçãodessepipelining, éimportantehavercomunicaçãodedadoseformasdesin- cronização entre produtores e consumidores eficientes. Os mecanismos tradicionais que possibilitam comunicação e sincronismo entre pares de P/C, tais como canais FIFO e bits de sinalização vazio/cheio baseados em memória partilhada podem não ser factíveis e/ou eficientes para todos os tipos de aplicações. Esta tese propõe uma abordagem para alcançar o pipelining de tarefas, incluindo tarefas com padrões de comunicação em ordem ou fora de ordem. Reconhecendo a importância da comunicação e da sincronização entre pares P/C, propõe-se utilizar abordagens de sincronização com granulosidades fina e grossa, possibilitando a exe- cução em pipeline de tarefas P/C em sistemas multinúcleo baseados em FPGA. As abordagens propostas permitem acelerar a execução global de tarefas sucessivas e com dependência de dados, por meio da utilização de múltiplos núcleos e de carac- terísticas específicas proporcionadas pelos FPGAs. Um importante componente da abordagem proposta é a utilização de um buffer para a comunicação de dados e para a sincronização dos núcleos associados às tarefas produtoras/consumidoras. Além disso, são propostas técnicas de otimização para essa abordagem de sincronização de dados de granularidade fina, a fim de reduzir o número de acessos a memórias par- tilhadas e/ou externas. As abordagens propostas foram avaliadas com a execução de um conjunto de benchmarks em uma placa de desenvolvimento para FPGAs e com medições reais. Os resultados das experiências mostram que essas abordagens são factíveis para tarefas do tipo P/C, tanto com execução em ordem quanto com execução fora de ordem. Adicionalmente, os resultados revelam melhorias de desem- penho significativas para a execução de diversos benchmarks quando comparados com uma implementação com um núcleo e sem pipelining a nível de tarefas. Keywords: Arquiteturas multinúcleo (multicore). pipelining a nível de tarefas. FPGA. comunicação de dados produtor/consumidor. v
Description: