Combining PREM compilation and static scheduling for high-performance and predictable MPSoC execution