One size does not fit all: a case for heterogeneous multiprocessor systems