A reconfigurable heterogeneous multiprocessor System on Chip