Embedded systems are playing an increasingly important role in nowadays life. They can be seen in a myriad of devices such as PDAs, cell phones, etc. New computer science disciplines have emerged focusing features and concepts related to the fact that small devices are becoming powerful mobile computing platforms. Such platforms are likely to rely on system-on-a-chip (SoCs) devices to give the required low energy consumption and computing demands. One of the most promising technologies to support SoCs are reconfigurable computing architectures (e.g., FPGAs) since they can implement single- or multi-processor software solutions together with dedicated hardware tailored to the application to be executed. Those architectures also provide the programming flexibility needed to upgrade applications during the life time of the product and to efficiently execute different applications.
Coarse-grained reconfigurable array architectures are an important SoC component. The shorter reconfiguration times and better energy and performance efficiency on mapping computational structures make coarse-gained arrays more suitable for certain applications than “gate-level” reconfigurable architectures. Coarse-grained arrays can also be an important target template for easier mapping of algorithms on complex FPGAs, as array softcores implemented by programming the FPGA resources.
Although designing reconfigurable hardware is softening, there is still the need to master digital system design in order to accomplish most requirements. However, the increasingly complexity of the architectures, the time-to-market pressures, the need for design upgrades and modifications in requirements, strongly indicate the necessity to program reconfigurable architectures at high-levels of abstraction. Efforts on compiling from software programming languages have been done for several years. However, the lack of support on FPGAs to help software compilation, their too close to gate-level basic elements, the clock frequency too dependent on place and route, seem to hamper the needed breakthrough advancements.
Bearing in mind the above referred issues, this project focuses on compiler techniques and architectural schemes that can be used to bridge the gap between software programming languages and reconfigurable computing architectures. Major research efforts on reconfigurable architectures seem to have been performed without the full attention on how algorithms are coded in software programming languages and without strong evidences about the design decisions taken. We focus on the foundations established by our previous work on a supportive environment to accomplish specific array architectures that can be coupled to a microprocessor in order to complement it with more efficient support for some computing behaviors and offering an easier path to map loop kernels to those arrays. We will make research efforts to reduce the mapping difficulties by providing the array architecture with some support for dynamic scheduling, loop control schemes, data-driven behavior, etc. Compilation techniques targeted for array architectures will also be researched. An intermediate representation model will be researched. That model will use the dynamic reconfiguration capabilities of some FPGA devices both to program an architectural template during runtime execution of an application and to switch templates based on the application requirements. We also plan that certain resources of each architectural template can be conditionally configured, based on its usage by the task being executed.
For validating our research we will use applications from mobile robotics as they exhibit most embedded system requirements and expose many challenges not being currently addressed. Mobile robotics need high-performance, real-time behavior, energy savings, etc. It usually demands miniaturization, frequently leading to a SoC solution. It typically needs hardware/software co-design, since for most robotic kernels using software implementations alone does not permit to achieve the required performance.
Since an evaluation of the computational engines generated for mobile robotics algorithms require in-the-field experiences (due, e.g., to environment changes and real-time behavior) we will use a prototype mobile robot (consisting of FPGA boards, camera, sensors, etc) to benchmark the specified application repository.
- The design of two new domain-specific languages (DSLs) - LALP and Cofi - to program FPGA-based accelerators;
- An aggressive scheme for loop pipelining;
- Novel techniques both at the compiler and at the hardware levels that make the mapping of computations to Coarse-Grained Reconfigurable Arrays (CGRAs) with faster;
- The Megablock, a single path, repeated, trace region for great potential of optimizations and acceleration when mapped to CGRAs;
- Mining of codes to identify suitable features for acceleration engines;
- Fundação para a Ciência e a Tecnologia (FCT): http://www.fct.mctes.pt
- FCT reference: PTDC/EEA-ELC/70272/2006
João M. P. Cardoso
Universidade do Porto
Faculdade de Engenharia (FEUP)
Departamento de Engenharia Informática
Rua Dr. Roberto Frias, s/n
PhD, MSc Thesis, and Technical Reports
- João M. P. Cardoso, FEUP, firstname.lastname@example.org
- João Bispo, IST/INESC-ID, PhD student
- Rui Marcelino, U.Algarve/INESC-ID, PhD student
- Adriano Sanches, IST/INESC-ID, PhD student
- Horácio Neto, IST/INESC-ID, researcher
- Mário Véstias, researcher, ISEL/INESC-ID
- Manuel Reis, FEUP, junior researcher
- Alfredo Silvestre, FEUP, junior researcher
- Ali Azarian, FEUP, assistant researcher
- Eduardo Marques, USP, Brasil
- Denis Wolf, USP, Brasil
- Pedro C. Diniz, ISI/USC, EUA
- Ricardo Menotti, USP/ICMC, PhD Student
- Ricardo Ferreira, Universidade de Viçosa, Brasil
- Marcio Merino Fernandes, Universidade Federal de São Carlos, Brasil
1. João M. P. Cardoso, and Pedro C. Diniz, Compilation Techniques for Reconfigurable Architectures, Springer, 234 p., Outubro de 2008, ISBN 978-0-387-09670-4. http://www.springer.com/computer/communications/book/978-0-387-09670-4
2. Pedro C. Diniz, and João M. P. Cardoso, Code Transformations for Embedded Reconfigurable Computing Architectures, in Generative and Transformational Techniques in Software Engineering III, International Summer School, GTTSE 2009, Braga, Portugal, July 6-11, 2009, Revised Papers, Fernandes, J.M.; Lämmel, R.; Visser, J.; Saraiva, J. (Eds.), LNCS 6491, Springer, Heidelberg, 2011, pp. 322-344.
3. João M. P. Cardoso, João Bispo, and Adriano K. Sanches, The Role of Programming Models on Reconfigurable Computing Fabrics, Chapter XII in the book: Behavioral Modeling for Embedded Systems and Technologies: Applications for Design and Implementation, Luís Gomes, João M. Fernandes (eds.), IGI Global, ISBN: 978-1-60566-750-8, July 2009, pp. 290-316.
Articles related to Tutorials:
4. Pedro C. Diniz, João M. P. Cardoso, “Compilation for Embedded Reconfigurable Computing Architectures,” GTTSE 2009: Pre-proceedings, Generative and Transformational Techniques in Software Engineering, João M. Fernandes, Ralf Lammel, João Saraiva, Joost Visser (eds.), June, 2009, Braga, Portugal, pp. 293-314.
5. João M. P. Cardoso, Pedro Diniz, and Markus Weinhardt, Compiling for Reconfigurable Computing: A Survey, ACM Computing Surveys (CSUR), Vol. 42, No. 4, Article 13, June 2010, pp. 1-65.
6. Ricardo Menotti, João M. P. Cardoso, Marcio M. Fernandes, and Eduardo Marques, “LALP: A Language to Program Custom FPGA-based Acceleration Engines,” in International Journal of Parallel Programming, Springer, to appear.
7. Ricardo S. Ferreira, João M. P. Cardoso, Alex Damiany, Julio Vendramini, and Tiago Teixeira, “Fast Placement and Routing by extending Coarse-Grained Reconfigurable Arrays with Omega Networks,” in Journal of Systems Architecture (JSA), Elsevier, In Press, Accepted Manuscript, Available online 15 April 2011.
International Conference/Workshop Papers:
8. João Bispo, and João M. P. Cardoso, “On identifying and optimizing instruction sequences for dynamic compilation,” in International Conference on Field-Programmable Technology (FPT’2010), Beijing, China, 8-10 Dec. 2010, pp. 437–440.
9. João Bispo, and João M. P. Cardoso, “On Identifying Segments of Traces for Dynamic Compilation,” in 20th International Conference on Field Programmable Logic and Applications (FPL’10), PhD Forum, Milano, Italy, Aug. 31st - Sept. 2nd, 2010, pp. 263-266.
10. Adriano Sanches, and João M. P. Cardoso, “On Identifying Patterns in Code Repositories to Assist the Generation of Hardware Templates,” in 20th International Conference on Field Programmable Logic and Applications (FPL’10), PhD Forum, Milano, Italy, Aug. 31st - Sept. 2nd, 2010, pp. 267-270.
11. Ricardo Menotti, João M. P. Cardoso, Marcio M. Fernandes, Eduardo Marques, “On Using LALP to Map an Audio Encoder/Decoder on FPGAs,” in IEEE International Symposium on Industrial Electronics (ISIE-2010), Bari, Italy, July 4-7, 2010.
12. Rui Marcelino, Horacio Neto, and João M. P: Cardoso, “Unbalanced FIFO Sorting for FPGA-Based Systems,” in 16th IEEE International Conference on Electronics, Circuits and Systems (ICECS’09), 13-16 December 2009, Yasmine Hammamet, Tunisia, pp. 431-434.
13. Rui Marcelino, Horacio Neto, and João M. P: Cardoso, “A Comparison of Three Representative Hardware Sorting Units,” in the 35th Annual Conference of the IEEE Industrial Electronics Society (IECON’2009), Alfandega Congress Center, Porto, Portugal, 3-5 November 2009, pp. 2805-2810.
14. R. Menotti, J. M. P. Cardoso, M. M. Fernandes, and E. Marques, “LALP: A Novel Language to Program Custom FPGA-based Accelerator Architectures,” in 21st International Symposium on Computer Architecture and High Performance Computing (SBAC–PAD’2009), Sao Paulo, Brazil, October 28-31, 2009, IEEE Computer Society Press, pp. [winner of the Julio Salek Aude Award 2009 - Best Paper of the Conference].
15. Ricardo Ferreira, Alex Assis, Tiago Teixeira, Julio Vendramini, João M. P. Cardoso, “On Simplifying Placement and Routing by Extending Coarse-Grained Reconfigurable Arrays with Omega Networks,” in International Workshop on Applied Reconfigurable Computing (ARC 2009), 16-18 March 2009, Karlsruhe, Germany, Springer LNCS 5453, pp. 145-156.
16. Carlos Morra, João Bispo, João M. P. Cardoso, and Juergen Becker, “Combining Rewriting-Logic, Architecture Generation, and Simulation to Exploit Coarse-Grained Reconfigurable Architectures,” in The Sixteenth Annual IEEE Symposium on Field-Programmable Custom Computing Machines (FCCM’08), Stanford, Palo Alto, CA, USA, April 14-15, 2008, IEEE Computer Society Press, pp.
17. Carlos Morra, João M. P. Cardoso, João Bispo, and Juergen Becker, “Retargeting, Evaluating, and Generating Reconfigurable Array-Based Architectures,” in 6th IEEE Symposium on Application Specific Processors (SASP 2008), 8-9 June 2008, Anaheim Convention Center, Anaheim CA, USA, pp. 34–41.
18. Rui Marcelino, Horácio Neto, João M. P. Cardoso, "Sorting Units for FPGA-Based Embedded Systems," in IFIP Working Conference on Distributed and Parallel Embedded Systems (DIPES'08), Milano, Italy, September 7-10, 2008, IFIP International Federation for Information Processing, Springer, Boston, Distributed Embedded Systems: Design, Middleware and Resources; Bernd Kleinjohann, Lisa Kleinjohann, Wayne Wolf (eds.), Volume 271, Springer, July 2008, pp. 11-22.
19. João Bispo, and João M. P. Cardoso, “A Preliminary Idea for Adapting Programs to Parallel Environments,“ In Proceedings of ACACES 2008 Poster Abstracts: Advanced Computer Architecture and Compilation for Embedded Systems, Academia Press, Ghent, Belgium, 2008. pp. 231-234.
20. Adriano K. Sanches, and João M. P. Cardoso, “Pattern-Mining over Repositories of Benchmarks to Identify and Suggest Reconfigurable Functional Units: A Preliminary Step”, In Proceedings of ACACES 2008 Poster Abstracts: Advanced Computer Architecture and Compilation for Embedded Systems, Academia Press, Ghent, Belgium, 2008. pp. 227-230.
21. Alfredo Silvestre, and João M. P. Cardoso, “Cofi: A CFG to FSMD Programming Language and Tool,” in VII Jornadas sobre Sistemas Reconfiguráveis (REC’2011), Faculdade de Engenharia de Universidade do Porto, 3-4 de Fevereiro de 2011. (artigo longo)
22. João Bispo, and João M. P. Cardoso, “Using the MegaBlock to Partition and Optimize Programs for Embedded Systems at Runtime,” in 2º Simpósio Nacional na Área da Informática (INForum’10), 9 e 10 de Setembro de 2010, Braga – Portugal. Sessão: Sistemas Embebidos e de Tempo-Real.
23. Manuel Reis, João M. P. Cardoso, João Canas Ferreira, “The Performance Impact for Optimizing Mapping Algorithms on an FPGA-based Mobile Robot,” in VI Jornadas sobre Sistemas Reconfiguráveis (REC'2010), Universidade de Aveiro / IEETA, 4-5 de Fevereiro de 2010, pp. (artigo longo)
24. Ricardo Menotti, João M. P. Cardoso, Márcio M. Fernandes, Eduardo Marques, “Uma Linguagem para Geração Automática de Arquitecturas Baseadas em Computação Reconfigurável,” in VI Jornadas sobre Sistemas Reconfiguráveis (REC'2010), Universidade de Aveiro / IEETA, 4-5 de Fevereiro de 2010, pp. (artigo longo)
25. Tiago Teixeira, Ricardo Ferreira, João M. P. Cardoso, “Explorando com Meta-Heurística o Espaço de Projeto de Arquiteturas Reconfiguráveis de Grão Grosso,” in V Jornadas sobre Sistemas Reconfiguráveis - REC'2009, Faculdade de Ciências e Tecnologia da Universidade Nova de Lisboa, Monte de Caparica, Portugal, 5-6 Fevereiro 2009.
26. Ricardo Ferreira, Alex Damiany, Julio Vendramini, João M. P. Cardoso, “Mapeamento em Arquitecturas Reconfiguráveis de Grão Grosso com Redes Multiestágios,” in V Jornadas sobre Sistemas Reconfiguráveis - REC'2009, Faculdade de Ciências e Tecnologia da Universidade Nova de Lisboa, Monte de Caparica, Portugal, 5-6 Fevereiro 2009.
27. Ricardo Menotti, LALP: uma linguagem para exploração do paralelismo de loops em computação reconfigurável, Doutorado pelo ICMC da USP do Brasil. Supervisor: Prof. Eduardo Marques (ICMC/USP, São Paulo, Brasil). Co-supervisor: João M. P. Cardoso, May 2010.
28. Manuel Luís Campos Reis, “Robô com Unidade de Processamento Principal implementada em FPGAs,” Co-adviser: Prof. João Canas Ferreira, Final MSc Project, Mestrado Integrado em Engenharia Electrotécnica e de Computadores (MIEEC), Faculdade de Engenharia de Universidade do Porto (FEUP), Porto, July 2009.
29. Tiago José Rocha Alves da Costa, “Methods for Dynamic Identification of Program Control-Flow Structures for FPGA-based Systems,” Co-adviser: Prof. João Canas Ferreira, Final MSc Project, Mestrado Integrado em Engenharia Electrotécnica e de Computadores (MIEEC), Faculdade de Engenharia de Universidade do Porto (FEUP), Porto, July 2009.
1. Alfredo Silvestre, and João M. P. Cardoso, “Cofi: A CFG to FSMD Programming Language and Tool,” Technical Report, COBAYA Project, Universidade do Porto, Faculdade de Engenharia (FEUP), February 2011.
2. Ali Azarian, and João M. P. Cardoso, “Pipelining Producer-Consumer Tasks using Custom Multi-Core Architectures,” Technical Report, COBAYA Project, Universidade do Porto, Faculdade de Engenharia (FEUP), March 2011.
4. Manuel Reis, The Performance Impact for Optimizing Mapping Algorithms on an FPGA-based Mobile Robot, Technical Report, COBAYA Project, Universidade do Porto, Faculdade de Engenharia (FEUP), December 2009.
5. João M. P. Cardoso, Ricardo Menotti, Alfredo Silvestre, Marcio M. Fernandes and Eduardo Marques, Comparing Loop Pipelining Alternatives for Reconfigurable Hardware, Technical Report, COBAYA Project, Universidade do Porto, Faculdade de Engenharia (FEUP), December 2009.
6. João Bispo, A 1-D Coarse-Grained Reconfigurable Array with Floating-Point Units, Technical Report, COBAYA Project, Universidade do Porto, Faculdade de Engenharia (FEUP), May 2009.
© João M. P. Cardoso, 2011