Static scheduling of synchronous data flow programs for digital signal processing
IEEE Transactions on Computers
Hardware and software for functional and fine grain parallelism
Hardware and software for functional and fine grain parallelism
A general method for compiling event-driven simulations
DAC '95 Proceedings of the 32nd annual ACM/IEEE Design Automation Conference
Interval scheduling: fine-grained code scheduling for embedded systems
DAC '95 Proceedings of the 32nd annual ACM/IEEE Design Automation Conference
A co-synthesis approach to embedded system design automation
Design Automation for Embedded Systems
Static timing analysis of embedded software
DAC '97 Proceedings of the 34th annual Design Automation Conference
Compiling Esterel into sequential code
Proceedings of the 37th Annual Design Automation Conference
Efficient compilation of process-based concurrent programs without run-time scheduling
Proceedings of the conference on Design, automation and test in Europe
System architecture directions for networked sensors
ASPLOS IX Proceedings of the ninth international conference on Architectural support for programming languages and operating systems
Techniques for Software Thread Integration in Real-Time Embedded Systems
RTSS '98 Proceedings of the IEEE Real-Time Systems Symposium
Compiling for Fine-Grain Concurrency: Planning and Performing Software Thread Integration
RTSS '02 Proceedings of the 23rd IEEE Real-Time Systems Symposium
Software thread integration for hardware to software migration
Software thread integration for hardware to software migration
Extending STI for demanding hard-real-time systems
Proceedings of the 2003 international conference on Compilers, architecture and synthesis for embedded systems
Providing time- and space- efficient procedure calls for asynchronous software thread integration
Proceedings of the 2004 international conference on Compilers, architecture, and synthesis for embedded systems
Software Thread Integration and Synthesis for Real-Time Applications
Proceedings of the conference on Design, Automation and Test in Europe - Volume 1
Balancing register pressure and context-switching delays in ASTI systems
Proceedings of the 2005 international conference on Compilers, architectures and synthesis for embedded systems
ACM Transactions on Embedded Computing Systems (TECS)
Hi-index | 0.00 |
The overhead of context-switching limits efficient scheduling of multiple concurrent threads on a uniprocessor when real-time requirements exist. Existing software thread integration (STI) methods reduce context switches, but only provide synchronous thread progress within integrated functions. For the remaining, non-integrated portions of the secondary threads to run and avoid starvation, the primary thread must have adequate amounts of coarse-grain idle time (longer than two context-switches). We have developed asynchronous software thread integration (ASTI) methods which address starvation through the efficient use of coroutine calls and integration. ASTI allows threads to make independent progress efficiently and reduces the number of context switches needed through integration.Software-implemented protocol controllers are crippled by this problem; the primary thread "bit-bangs" each bit of a message onto or off of the bus, leaving only fragments of idle time shorter than a bit time. This fragmented time may be too short to recover through context switching, so only the primary thread can execute during message transmission or reception, slowing the secondary threads and potentially making them miss their deadlines. ASTI simplifies the implementation of embedded communication protocols on low-cost, moderate speed (1 - 100 MHz, 8- and 16-bit) microcontrollers. We demonstrate ASTI by replacing a standard automotive communication protocol controller (J1850) with software and generic hardware. Secondary thread performance improves significantly when compared with a traditional interrupt-based software approach.