Asokan, Vasanth ; Dr. Alexander G. Dean, Committee Chair,Dr. Frank W. Mueller, Committee Co-Chair,Dr. Mihail Sichitu, Committee Member,Asokan, Vasanth ; Dr. Alexander G. Dean ; Committee Chair ; Dr. Frank W. Mueller ; Committee Co-Chair ; Dr. Mihail Sichitu ; Committee Member
Asynchronous Software Thread Integration (ASTI) provides methods to reclaim sub-bit duration idle intervals in the real-time threads which bang bits onto and off from the network bus, by allowing asynchronous progress of secondary threads. Current ASTI techniques constrain the secondary thread from having procedures and procedure calls because of conflicts in timing that arise. Constraining procedure calls is very inelegant and limits the usefulness of the techniques developed in ASTI. It also significantly lowers the ease with which software can be developed and maintained. Flat code is significantly larger in size compared to code that has been structured into procedures. This can be extremely important in embedded systems where code memory is at a premium.This thesis presents a novel application of the traditional compiler optimization techniques - procedure inlining and procedure cloning, to remove the constraints on procedure calls with ASTI. Under the assumption that the system cannot tolerate the inlining of all procedure calls, this thesis provides an algorithmic approach to choosing some subset of calls to inline and to remove the timing conflicts in the remaining procedures in the most optimal fashion.Timing conflicts in the remaining calls can be removed by padding calls to a procedure to the worst case. Procedure cloning can be used to extend this by clustering calls that have similar environments together and dedicating a clone of the procedure to the cluster. We show that this would result in significant reductions not only in the amount of static padding cycles required, but also in the amount executed at run-time too. We expect a secondary thread, which uses cloning to reduce the amount of padding, to show a significant speedup when compared to a non-cloned version. Providing a scientific approach for constraint relaxation, instead of an ad-hoc one, will also produce much more efficient code both in terms of size and consumed processor cycles