This project has been to devise and prototype solutions to several problems that have limited multiprocessor system performance.
Threads are the vehicle for concurrency in many approaches to parallel programming.
I have shown that thread management overhead can be reduced to within an order of magnitude of the cost of a procedure call. With high performance threads, however, small differences in thread management can have a significant performance impact for applications with fine-grained parallelism, often posing a tradeoff between throughput and latency. Per-processor data structures can be used to improve throughput, and in some circumstances to avoid locking, improving latency as well. Efficient thread management is impossible without efficient low-level synchronization primitives. In the work on thread management we discovered that, contrary to intuition, the obvious methods of spin-waiting for busy critical sections have poor performance.