Bi-Directional Timing-Power Optimisation on Heterogeneous Multi-Core Architectures