Offloading Techniques to Improve Performance on MPI Applications in NoC-Based MPSoCs