Techniques for Adaptive Power and Thermal Sensing and Management of Multi-core Processors