| |
|
Projects in embedded software:
Embedded software resources:
|
|
Code Optimization
Over the years we have developed several methods for optimizing loop-intensive
embedded software. Most recently, we have applied retiming, a traditional
hardware optimization, to code scheduling. Retiming provides a theoretical
framework and practical method for provably-good scheduling in loop nests.
Selected papers:
- Noureddine Chabini and Wayne Wolf, "Minimizing variables' lifetime
in loop-intensive applications," in Rajeev Alur and Insup Lee,
eds., Embedded Software, Berlin: Springer, LNCS 2855, 2003, pp.
100-116.
- Noureddine Chabini and Wayne Wolf, "An approach for integrating
basic retiming and software pipelining," in Proceedings,
EMSOFT 2004, ACM Press, 20043, pp. 287-296.
Memory Systems
Memory systems play a major role in determining both the performance
and energy consumption of embedded systems. We developed a process-level
cache model for multi-tasking that allows tools to optimize the cache
behavior of multi-process systems. With Mahmut Kandemir of Penn State,
we wrote a survey on memory systems for the Proceedings of the IEEE.
Selected papers:
- Yanbing Li and Wayne Wolf, "Hardware/software cosynthesis of
memory systems," IEEE Transactions on CAD, 18(10), October
1999, pp. 1405-1417.
- Wayne Wolf and Mahmut Kandemir, "Memory system optimization of
embedded software," Proceedings of the IEEE, 91(1), January
2003, pp. 165-182.
Real-Time Scheduling
With Joerg Henkel of NEC, we developed a novel model for multi-tasking
that allows the OS to switch between several implementations of a task
during execution. We use a combination of design-time and run-time methods
to make sure that the schedule does not violate deadlines either during
transient behavior or in steady state as a task switches implementations.
Selected papers:
- Tin-Man Lee, Joerg Henkel, and Wayne Wolf, "Dynamic runtime
re-scheduling allowing multiple implementations of a task for platform-based
designs," in Proceedings, DATE '02, IEEE, 2002.
|