Existing software thread integration (STI) methods provide synchronous thread progress within integrated functions. For the remaining, non-integrated portions of the secondary (or host) threads to run and avoid starvation, the primary (or guest) thread must have adequate amounts of coarse-grain idle time (longer than two contextswitches). Fine-grain idle time is too short to be used for other threads, as it does not allow the context switches needed to switch between the primary and secondary threads. 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 sub-bit duration fragments of idle time. This fragmented time is typically too short to recover through context switching, so only the primary thread can execute during message transmission or reception. Heavy network utilization can starve the secondary threads, leading to poor or unacceptable system performance. We have de...
Nagendra J. Kumar, Siddhartha Shivshankar, Alexand