With the advent of multicores, there is demand for monitoring parallel programs running on multicores for enhancing reliability and performance. Debugging tools such as data race detection and deterministic replay debugging (DRD) require a parallel program to be monitored at runtime. Likewise, techniques such as dynamic information flow tracking (DIFT) that are used for preventing security attacks also require runtime monitoring. Furthermore, techniques such as speculative parallelization and speculative optimization , that strive to expose parallelism and increase performance of programs, also require runtime monitoring---detecting misspeculation, which is an integral component of any speculative technique requiring the program to be monitored at runtime.;While each of the above monitoring applications are quite different in their purpose and implementation, they all share a common requirement in the context of monitoring a parallel program running on a multicore---the need to detect and react to interprocessor shared memory dependences (ISMD). Current software based monitoring tools, due to their inability to detect and react to ISMDs efficiently, are rendered inapplicable for monitoring parallel programs running on multicores. On the contrary, hardware based monitoring tools, while applicable in a multicore context, require specialized hardware modifications specific for each monitoring task.;This dissertation IMPRESS strives to Improve Multicore Performance and Reliability by providing Efficient Support for enabling Software based monitoring. To enable software based monitoring on multicores, this dissertation proposes ECMon---lightweight and general purpose support for exposing cache events to the software, in effect, efficiently exposing ISMDs to the software. Using ECMon, a variety of monitoring applications, which were inapplicable on multicores, can now be used to efficiently monitor parallel program on multicores. More specifically, a class of monitoring applications known as shadow memory tools such as DIFT for security, Memcheck and Eraser for debugging, can now monitor parallel programs running on multicores at almost the same execution overhead as monitoring sequential programs, using ECMon support. ECMon can also be used to develop novel monitoring applications for increasing performance and reliability. In particular, ECMon can be used for performing speculative optimizations on parallel programs which results in about 14.5% execution time reduction in a set of seven parallel programs considered. Finally ECMon can be used by servers to recover from memory errors without requiring heavy-weight checkpointing or rollback.;To summarize, this dissertation proposes light-weight and general purpose support in the form of exposing cache events to the software. Using this support, it is shown how parallel programs running on multicores can be monitored efficiently for increasing performance and enhancing reliability.
展开▼