Rapid advances in transistor technology combined with innovations in computer architecture have led to manycore processors, which can deliver significantly higher software performance. Getting scalable performance (for example, eight times speedup in program execution time on an eight-core processor) is a challenging task even for experienced software developers. This is because parallel programs can suffer from performance problems that either do not exist in sequential applications or that are aggravated by parallel execution. Also, power consumption of manycore applications is a crucial factor limiting their widespread adoption. Unfortunately, analyzing manycore applications for performance and power using just software tools presents challenges due to programs written in multiple languages and source files, libraries in binary-only form, and so on. An efficient hardware-software framework, that can offer insight into performance and power profiles of software execution and subsequently facilitate remediation mechanisms to overcome the observed program bottlenecks, would be a valuable step toward realizing the promise of manycore computing.
This research project explores a transformative hardware-software cooperative solution, where the software receives an introspective look into the hardware behavior and dynamically deploys remediation mechanisms to boost performance and lower the power consumption in manycore applications. This hardware-software approach is drastically different from the conventional hardware-level optimization techniques that can no longer automatically guarantee performance scalability, given the increasing diversity and complexity of manycore applications. The outcomes of this project can be used both in software development and education to more precisely understand the manycore application behavior. On a broader level, this introspective framework can boost programmer productivity by offering fast and more accurate feedback about the program execution, and effectively improving the software development cycle.