Abstract:
RESUMO: Observa-se nos dias atuais que os sistemas embarcados estão cada vez mais heterogêneos. Diferentes funcionalidades são integradas em um mesmo dispositivo. Juntamente com essa heterogeneidade, as aplicações executadas nesses dispositivos estão cada vez mais complexas. Processadores convencionais (Processadores de Propósito Geral ou Processadores de Aplicação específica) são capazes de fornecer desempenho ou flexibilidade, mas não ambos. Nesse cenário, há uma busca por soluções arquiteturais que possam fornecer desempenho e maior flexibilidade aos dispositivos processantes. Arquiteturas reconfiguráveis já se mostraram como uma solução arquitetural com maior flexibilidade que os processadores convencionais e capazes de aumentar desempenho em ambientes monocore. Contudo, nos dias atuais, as arquiteturas multicore são dominantes no mercado de processadores. Com isso, é necessário rever o modo como as arquiteturas reconfiguráveis são concebidas e utilizadas. Tradicionalmente, em ambientes monocore, uma arquitetura reconfigurável (geralmente formada por um array de unidades funcionais) é acoplada ao processador, gerando-se considerável custo em área adicional. Portanto, migrar as arquiteturas reconfiguráveis tradicionais para um ambiente multicore geraria grande overhead de área. Dentro deste contexto, esta dissertação de mestrado propõe e avalia uma arquitetura reconfigurável para processadores multicore denominada DREAMS. A arquitetura proposta possui um array reconfigurável que é compartilhado entre os quatro núcleos de processamento. O array reconfigurado é organizado em 4 colunas reconfiguráveis que são compostas por três elementos de processamento e uma unidade de acesso à memória. A arquitetura proposta oferece recursos computacionais para acelerar múltiplas threads (ou processos) executando simultaneamente em diferentes núcleos de um processador multicore. Essa arquitetura inclui um tradutor binário que converte, em tempo de execução, sequências de instruções executadas em um núcleo do processador, para serem executadas na arquitetura reconfigurável. O tradutor binário provê compatibilidade de software e faz o mecanismo de reconfiguração da arquitetura ser totalmente transparente. A arquitetura proposta foi implementada utilizando a biblioteca systemC e a linguagem de programação C++. Sua validação foi realizada através de simulações utilizando quatro aplicações selecionadas. Para análise de desempenho, foi feita uma comparação do tempo de execução das aplicações em um multicore com e sem a arquitetura DREAMS. Também foi feita uma análise do código gerado por dois compiladores: cross compiler GNU GCC e um compilador desenvolvido no laboratório CESLa (Circuits and Embedded System Lab) do departamento de computação da Universidade Federal do Piauí. Os resultados obtidos mostram que a arquitetura reconfigurável acelera, em média, 39% utilizando o código gerado pelo cross compiler GNU GCC e 28% utilizando o código gerado pelo compilador desenvolvido no laboratório CESLa. ABSTRACT: Nowadays, embedded systems are becoming more heterogenous. Different functionalities are integrated in the same device. Along with this heterogeneity, the applications run on these devices are getting more complex. Conventional processors (General Purpose Processor and Application Specific Integrated Circuit) are able to provide performance or flexibility, but not both. In this scenario, there is a quest for architectural solutions that can provide higher performance and flexibility. Reconfigurable architectures have already shown to be an architectural solution able to provide higher performance and flexibility than conventional processors in single core environment. Nevertheless, multicore processors are dominant in the market of processors nowadays. With this, it is necessary to review the way reconfigurable architectures are designed and used. Tradicionally, in a single core environment, the reconfigurable architecture (usually composed by an array of funcional units) is attached to the processor, which implies in an area overhead. Therefore, integrating the tradicional reconfigurable architectures to multicore processors would be prohibitive in terms of area overhead. In this context, this Msc dissertation proposes and evaluate a reconfigurable architecture for multicore processors named DREAMS. The proposed architecture has one reconfigurable array, which is shared among the processors’ cores. The reconfigurable array is organized in four reconfigurable columns that are composed of 3 processing elements and 1 load and store unit. The proposed architecture offers computacional resources for speeding up threads running simultaneously on different cores of the processor. This architecture includes a binary translator that translates, at run time, a sequence of instructions run on a core processor to be run on our reconfigurable architecture. The binary translator provides software compatibility and allows the reconfiguration mechanism to be transparent. The proposed architecture was implemented using the systemC library and C++ programming language. The validation was performed through simulations, using four selected applications. In order to evaluate the performance, a comparison between the execution in a multicore processor with and without the DREAMS architecture was performed. The applications were compiled with two compilers: cross compiler GNU GCC and a compiler developed in the CESLa laboratory at UFPI. The results show that the DREAMS architecture speeds up the application, in average, 39% using the cross compiler GNU GCC and 28% using the compiler developed in the laboratory.