Unfortunately, these attempts almost always decrease performance below what is acceptable to the user. Many OS research projects in the 1980s examined how microkernel operating systems could provide a more robust and flexible software base. However, the inherent cost of an inflexible set of protection mechanisms and policies made the performance cost too great. Unfortunately, these software protection mechanisms incur a cost that a more carefully design set of hardware protection mechanisms could eliminate. Providing a more flexible set of VM mechanisms could also lead to significant improvements in software's performance, reliability and complexity.
Many processors already provide some form of feedback using on-chip performance counters.
These course-grained probes provide a great deal of information about the behavior of an application. However, it is usually difficult to extract the information in a way that would benefit the application. Processors also need to allow the application more opportunity to control the hardware structures. Compilers need to learn how a program utilizes the memory system, feeding that information back into subsequent compiles. Throughout the system, there are opportunities for software to advise, learn and modify their behavior to improve performance.