Simultaneous Optimization Of Performance, Energy, And Temperature While Allocating Tasks To Multi-cores