Dynamic Thermal Management for Microprocessors