Microprocessor performance has doubled approximately every 18 months for several decades, making existing applications faster without much programming effort and allowing more demanding new applications to be developed. However, now the trend of steadily improving performance for existing applications has stalled. The performance potential of a microprocessor chip is still rapidly increasing, but the increase now mainly comes from packing more and more processor cores onto the chip, not from making each core faster. This provides little benefit to existing applications that can only utilize one core, so they must be re-designed to take advantage of multiple cores. Unfortunately, correct design of multi-core applications is much harder to achieve than was the case for single-core applications, and it is even harder for programmers to achieve scalability ? enabling applications to keep improving their performance as even more cores become available in the future. This problem threatens to disrupt the entire hardware-software ecosystem and possibly put an end to rapid improvements in computing performance, the information technology revolution, and the resulting productivity increases.
This research project will investigate hardware and software performance debugging mechanisms that would help programmers identify and alleviate performance problems in their many-core applications, both for use in application development and in education. This will help the information technology revolution stay on track by helping existing programmers and training new ones to write scalable many-core applications that will in turn create demand for even more cores, allowing rapid progress in computing performance to continue.